![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дабл клик на гриде [D7, WinXP]
aht © (2006-09-28 09:02:00)Доброго времени суток.
Создаю в своем приложении StringGrid create'ором, но не могу сообразить как "прикрутить" нужную процедуру к событию ДаблКлик на созданном гриде?
umbra (2006-09-28 11:09:00) [1]2 Elen © (28.09.06 10:41) [11]
прошу прощения! :)
aht (2006-09-28 10:50:00) [2]ну вот, пасибо большое всем!
поставил описание грида в раздел
private
{ Private declarations }
описание процедуры - в форме, присвоение процедуры - после динамического создания грида.
ЗЫ. Грид на форме не лежит, он создается динамически!!!
Elen (2006-09-28 10:41:00) [3]
> umbra
см. выше :
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure DBL(Sender: TObject);
...
umbra (2006-09-28 10:34:00) [4]
> procedure tform1.DBL;
> //const
> //Var
> begin
>
> end;
procedure tform1.dbl (Sender: Tobject);
ЮЮ (2006-09-28 10:29:00) [5]
> перенеси sg2 в секцию private или protected
тогда и создать его не забудь.
Потому как в [1] StringGrid уже лежал на фоме и ему только назначался обработчик.
Elen (2006-09-28 10:19:00) [6]
> aht
потому что sg2: TStringGrid; надо прописывать в разделе
private
{ Private declarations }
public
{ Public declarations }
Т,К, делфи не находит на форме явного присутствия грида
clickmaker (2006-09-28 10:19:00) [7]
> [6] aht © (28.09.06 10:17)
перенеси sg2 в секцию private или protected
aht (2006-09-28 10:17:00) [8]ну хорошо, почему в таком случае, появляется диалог (сделал также, как описала 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;
ЮЮ (2006-09-28 10:11:00) [9]Код обработчика, естественно, должен быть создан заранее, как метод формы
(см. tform1.DBL в [1]), а код внутри должен использовать Sender, а не какой-нибудь ButtonXXX, как можно было бы позволить себе, когда создаешь уникальный по действию обработчик для кнопки ButtonXXX непоследственно в IDE
Elen (2006-09-28 10:07:00) [10]
> описание должно быть другое
Глупости! Динамическое приатачивание событий остается неизменным -StringGrid1.OnDblClick:=dbl;
clickmaker (2006-09-28 10:00:00) [11]
> но если он создается, предположим, при нажатии какого-либо
> батона, описание должно быть другое
в смысле другое?
aht (2006-09-28 09:47:00) [12]это всё так, если грид создается вместе с формой1, но если он создается, предположим, при нажатии какого-либо батона, описание должно быть другое :-(
Elen (2006-09-28 09:10:00) [13]
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.