Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.034 c
1-1083086641
asdus
2004-04-27 21:24
2004.05.16
Передача двумерного массива в процедуру/функцию


14-1083118463
Думкин
2004-04-28 06:14
2004.05.16
С днем рождения! 28 апреля.


14-1082531195
stud
2004-04-21 11:06
2004.05.16
удаление sp4 win2000


3-1082642735
RomCom
2004-04-22 18:05
2004.05.16
Поля с данными Null в TQuery+TUpdateSQL


14-1082953559
Warrior
2004-04-26 08:25
2004.05.16
WinAPI контролы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский