Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Визуальное наследование


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 строке.

Код в студию скажу от какой строки она семнадцатая.


Наверх

Титульная страница Поиск, карта сайта Написать письмо