![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Визуальное наследование
sergeyst © (2007-01-29 10:02:00)Здрасте.
Сделал фрейм с тулбаром. На форме какие-то кнопки работают, какие-то нет. Кенту пишет, что визуальное наследование для форм не работает, а для фреймов? Хотя, когда, для примера, делаю простые фрейм или форму - все как надо, а вот в реальной задаче - чего-то глючит. Подскажите, кто знает.
evvcom (2007-01-29 14:28:00) [1]> [10] sergeyst © (29.01.07 12:24)
Все должно. Хотя, что ты в данном случае называешь наследованием? В дизайнтайм в D7 на форме для объекта из фрейма я не вижу в инспекторе обработчика, хотя находясь в модуле самого фрейма я его вижу.
В фрейме ты написал обработчик, он прописался в ресурсы фрейма. Этот фрейм внедряешь в форму. В рантайм он создается, все инициализируется в соответствии с ресурсами фрейма, и если ты этот обработчик в форме не переназначал, т.е. в ресурсах формы он не значится, то и в рантайм после всех этих созданий/инициализаций из ресурсов формы он никак не изменится. Поэтому должен вызваться обработчик, написанный в модуле фрейма.
Elen (2007-01-29 12:50:00) [2]
> sergeyst © (29.01.07 11:58) [7]
>
>
> > Elen © (29.01.07 10:45) [6]
>
> Так они на клике
> tbViewSPW - это имя кнопки
> tbViewSPWClick - это, я так понимаю, OnClick
Эт я понимаю. Меня просто немного удивило выражение :
> эти кнопки работают:
> procedure TViewDocFrame.OleContainer1DragOver(Sender, Source:
> TObject; X,
sergeyst (2007-01-29 12:24:00) [3]Ну, а вообще наследоваться-то должно? И на формах?
(в смысле наследование обработчиков для коллекций - ListView, ToolBar и т.д.)?
sergeyst (2007-01-29 12:24:00) [4]А что означает ИМХО?
sergeyst (2007-01-29 12:21:00) [5]evvcom © (29.01.07 12:02) [8]
Дык, в том то и дело, что не переназначал
evvcom (2007-01-29 12:02:00) [6]> [3] sergeyst © (29.01.07 10:27)
> неработающие в фрейме процедуры в форме работают
Посмотри в форме, обработчики на эти кнопки стоят? А то в фрейме они есть, а в форме ты их мог переназначить.
sergeyst (2007-01-29 11:58:00) [7]
> Elen © (29.01.07 10:45) [6]
Так они на клике
tbViewSPW - это имя кнопки
tbViewSPWClick - это, я так понимаю, OnClick
Elen (2007-01-29 10:45:00) [8]
> Не работает из-за названий?
> На какие поменять?
Поменять не названия, а события. если эти кода должны вызываться по кликуто их и надо посадить на OnClick.
sergeyst (2007-01-29 10:39:00) [9]Elen © (29.01.07 10:32) [4]
Не работает из-за названий?
На какие поменять?
Elen (2007-01-29 10:32:00) [10]
> sergeyst
эти кнопки работают:
OleContainer1DragOver
Image1MouseDown
Это что за название кнопок такое?
sergeyst (2007-01-29 10:27:00) [11]неработающие в фрейме процедуры в форме работают
sergeyst (2007-01-29 10:26:00) [12]эти кнопки работают:
procedure TViewDocFrame.OleContainer1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var
T: TPoint;
begin
T:=Mouse.CursorPos;
T:= ScrollBox1.ScreenToClient(T);
OleContainer1.Top:=T.Y-MouseXY.Y;
OleContainer1.Left:=T.X-MouseXY.X;
end;
procedure TViewDocFrame.Image1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
MouseXY.X := X;
MouseXY.Y := Y;
Image1.BeginDrag(True);
end;
end;
а эти нет:
procedure TViewDocFrame.tbViewCDWClick(Sender: TObject);
begin
Par_Code := 'EGA0009';
OleContainer1.Visible := True;
Image1.Visible := False;
OleContainer1.BringToFront;
UnitProc.CDWView(OleContainer1, MainChildForm.IBQueryList.FieldByName('NMK_ID').AsInteger);
end;
procedure TViewDocFrame.tbViewSPWClick(Sender: TObject);
begin
Par_Code := 'EGA0011';
OleContainer1.Visible := True;
Image1.Visible := False;
OleContainer1.BringToFront;
UnitProc.SPWView(OleContainer1, MainChildForm.IBQueryList.FieldByName('NMK_ID').AsInteger);
end;
tesseract (2007-01-29 10:18:00) [13]
> Хотя, когда, для примера, делаю простые фрейм или форму
> - все как надо, а вот в реальной задаче - чего-то глючит.
> Подскажите, кто знает.
Ошибка в 17 строке.
Код в студию скажу от какой строки она семнадцатая.