Текущий архив: 2006.10.15;
Скачать: CL | DM;
ВнизДабл клик на гриде Найти похожие ветки
← →
aht © (2006-09-28 09:02) [0]Доброго времени суток.
Создаю в своем приложении StringGrid create"ором, но не могу сообразить как "прикрутить" нужную процедуру к событию ДаблКлик на созданном гриде?
← →
Elen © (2006-09-28 09:10) [1]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure DBL(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//********* PROCEDURE**********
procedure tform1.DBL;
//const
//Var
begin
end;
//********* END PROCEDURE*******
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.OnDblClick:=dbl;
end;
end.
← →
aht © (2006-09-28 09:47) [2]это всё так, если грид создается вместе с формой1, но если он создается, предположим, при нажатии какого-либо батона, описание должно быть другое :-(
← →
clickmaker © (2006-09-28 10:00) [3]
> но если он создается, предположим, при нажатии какого-либо
> батона, описание должно быть другое
в смысле другое?
← →
Elen © (2006-09-28 10:07) [4]
> описание должно быть другое
Глупости! Динамическое приатачивание событий остается неизменным -StringGrid1.OnDblClick:=dbl;
← →
ЮЮ © (2006-09-28 10:11) [5]Код обработчика, естественно, должен быть создан заранее, как метод формы
(см. tform1.DBL в [1]), а код внутри должен использовать Sender, а не какой-нибудь ButtonXXX, как можно было бы позволить себе, когда создаешь уникальный по действию обработчик для кнопки ButtonXXX непоследственно в IDE
← →
aht © (2006-09-28 10:17) [6]ну хорошо, почему в таком случае, появляется диалог (сделал также, как описала Elen): "Field Form4.sg2 does not have a corresponding componrnt. Remove the declaration?" а точнее:
type
TForm4 = class(TForm)
sg2: TStringGrid; //sg 2
procedure sg2DblClick(Sender: TObject); //sg 2
procedure FormCreate(Sender: TObject);
...
procedure TForm4.FormCreate(Sender: TObject);
begin
sg2.OnDblClick:=sg2DblClick;
end;
← →
Elen © (2006-09-28 10:19) [7]
> aht
потому что sg2: TStringGrid; надо прописывать в разделе
private
{ Private declarations }
public
{ Public declarations }
Т,К, делфи не находит на форме явного присутствия грида
← →
clickmaker © (2006-09-28 10:19) [8]
> [6] aht © (28.09.06 10:17)
перенеси sg2 в секцию private или protected
← →
ЮЮ © (2006-09-28 10:29) [9]
> перенеси sg2 в секцию private или protected
тогда и создать его не забудь.
Потому как в [1] StringGrid уже лежал на фоме и ему только назначался обработчик.
← →
umbra © (2006-09-28 10:34) [10]
> procedure tform1.DBL;
> //const
> //Var
> begin
>
> end;procedure tform1.dbl(Sender: Tobject);
← →
Elen © (2006-09-28 10:41) [11]
> umbra
см. выше :type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure DBL(Sender: TObject);
...
← →
aht © (2006-09-28 10:50) [12]ну вот, пасибо большое всем!
поставил описание грида в раздел
private
{ Private declarations }
описание процедуры - в форме, присвоение процедуры - после динамического создания грида.
ЗЫ. Грид на форме не лежит, он создается динамически!!!
← →
umbra © (2006-09-28 11:09) [13]2 Elen © (28.09.06 10:41) [11]
прошу прощения! :)
Страницы: 1 вся ветка
Текущий архив: 2006.10.15;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.042 c