Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Кнопка в StringGrid   Найти похожие ветки 

 
killer ©   (2004-04-29 11:46) [0]

Создал 5 кнопок в ячейках StringGrid-а... А как мне определить на какой строке была нажата кнопка? (событие OnClick почему то не работает... пришлось OnMouseUp использовать...)

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Buttons;

type
 TForm1 = class(TForm)
   StringGrid1: TStringGrid;
   Button1: TButton;
   BitBtn1: TBitBtn;
   procedure Button1Click(Sender: TObject);
   procedure BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i:=1 to 4 do
with TBitBtn.Create(StringGrid1) do
 begin
 Parent:=StringGrid1;
 BoundsRect:=StringGrid1.CellRect(4, i);
 OnMouseUp:=BitBtn1MouseUp;
 end;
end;

procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
ShowMessage(StringGrid1.Cells[1, ......]);
end;

end.


 
killer ©   (2004-04-29 13:06) [1]

Удалено модератором
Примечание: Создание пустых сообщений...


 
ЁПРСТ   (2004-04-29 13:55) [2]

Попробуй координаты мыши прогонять через CellRect Стринггрида и проверять попадают ли они внутрь ячейки.


 
pasha_golub ©   (2004-04-29 15:52) [3]

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i:=1 to 4 do
with TBitBtn.Create(StringGrid1) do
begin
Parent:=StringGrid1;
BoundsRect:=StringGrid1.CellRect(4, i);
OnMouseUp:=BitBtn1MouseUp;
end;
end;

А почему кнопка создается при нажатии? В таком коде можно и голову сломать.


 
killer ©   (2004-04-29 22:22) [4]

pasha_golub  Кнопка создается при добавлении новой строки... а строка добавляется по нажатию другой кнопки... :)))


 
killer ©   (2004-04-29 22:23) [5]

ЁПРСТ  Во... а как проверить попадают ли координаты внутрь StringGrid-а?


 
Jack128 ©   (2004-04-29 22:25) [6]

var
i: integer;
begin
for i:=1 to 4 do
with TBitBtn.Create(StringGrid1) do
begin
Parent:=StringGrid1;
BoundsRect:=StringGrid1.CellRect(4, i);
Tag := i;
OnMouseUp:=BitBtn1MouseUp;
end;
end;

procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
 ShowMessage(StringGrid1.Cells[1 , TComponent(Sender).Tag]);
end;


 
killer ©   (2004-04-29 22:33) [7]

Jack128  Спасибо тебе ОГРОМНОЕ!!! Все работает...


 
killer ©   (2004-04-29 23:55) [8]

а как потом можно переменить свойство Tag у этих кнопок?


 
Jack128 ©   (2004-04-30 00:09) [9]

TComponent(Sender).Tag := <твое значение>;

PS Завтра подьем в 9 утра и пробежка до книжного магазина в обязательном порядке..


 
killer ©   (2004-04-30 00:11) [10]

Jack128 не... мне у всех надо сразу поменять... :)))


 
killer ©   (2004-04-30 00:12) [11]

причем по нажатию той кнопки которая добавляет новую строку и кнопку... дело в том что у меня строки сортируются по алфавитному порядку...


 
killer ©   (2004-04-30 01:24) [12]

все... дошло до меня.... ненадо ничего менять... :)))) Все будет нормально... но... а как удалить теперь кнопочку? Одну хотябы... последнюю... :))) Это если строку удалишь, чтобы кнопочка тоже (последняя) удалялась...


 
Mim1 ©   (2004-04-30 04:13) [13]

У stringgrig есть свойство objects, при создании кнопки нужно запсывать ссылку на нее а при удалении ячейки проверять есть ли в этом "свойствемассиве" ссылка на кнопку, если есть по прибывать кнопку.

ИМХО создавать кнопки для каждой ячейки массива не правильно. Вернее рисовать кнопку в ячейке грида самостоятельно. На королевстве есть статься на эту тему.


 
killer ©   (2004-04-30 11:53) [14]

а как удалять? У меня вылитает ошибка... делаю так:

если удалить последнюю кнопку...

procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.Objects[4,4].Free;
end;



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
8-1077809370
Spartak
2004-02-26 18:29
2004.05.16
Смена картинок


8-1076930413
r00t
2004-02-16 14:20
2004.05.16
Компонент, работающий с gif на уровне канвы.


3-1082616204
Infom
2004-04-22 10:43
2004.05.16
Сохранение


3-1082308600
linx
2004-04-18 21:16
2004.05.16
Не получается настроить права в InterBase.


1-1082970081
HarryP
2004-04-26 13:01
2004.05.16
Unicode