Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизКнопка в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c