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

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

Дабл клик на гриде [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.


Наверх

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