Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2011, 06:18   #1
Apollon61
 
Регистрация: 09.01.2010
Сообщений: 4
По умолчанию Кнопка в StringGrid

Есть две процедуры: Первая рисует кнопки и открывает текстовый файл, вторая обрабатывает клик по кнопки. Вот эти процедуры:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
f : TStringList;
begin
f := TStringList.Create();
f.LoadFromFile('C:\1.txt');
for i:=1 to 4 do
with TBitBtn.Create(StringGrid1) do
begin
Caption:='Кнопка';
Parent:=StringGrid1;
BoundsRect:=StringGrid1.CellRect(1, i);
OnMouseUp:=BitBtn1MouseUp;
end;
end;

procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ShowMessage(<Здесь информация о кнопки>)
end;
Вопрос: Как во второй процедуре по клику какой либо из кнопок выводилась информация из файла соответствующая данной кнопки .
Заранее спасибо




___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 20.04.2011 в 08:58.
Apollon61 вне форума Ответить с цитированием
Старый 20.04.2011, 09:05   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) если Вы создали TStringList, так и очистить память надо
f.Free; или, лучше даже так: FreeAndNil(f);

2) не понял, а зачем Вы читали файл, если Вы дальше нигде его не использовали?

3) каким образом связаны кнопка и файл? Т.е. по нажатию какой кнопки какой файл надо прочитать?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.04.2011, 10:43   #3
Apollon61
 
Регистрация: 09.01.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
1) если Вы создали TStringList, так и очистить память надо
f.Free; или, лучше даже так: FreeAndNil(f);

2) не понял, а зачем Вы читали файл, если Вы дальше нигде его не использовали?

3) каким образом связаны кнопка и файл? Т.е. по нажатию какой кнопки какой файл надо прочитать?...
Вообщем нужно сделать следующее: после нажатия к примеру Кнопки находящейся в первой строке таблицы она выводила первую строку из файлы, при нажатии кнопки находящейся во второй строке она выводила вторую строку из файла и т.д.
Apollon61 вне форума Ответить с цитированием
Старый 20.04.2011, 10:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю проапгрейдить класс кнопки
Код:
unit Unit1;

interface

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

type
  TButton =class(StdCtrls.TButton)
   private
    fileName:String;
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(TButton(sender).fileName);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

with TButton.Create(self) do begin
 Caption:='Êíîïêà';
 Parent:=self;
 OnClick:=Button1Click;
 fileName:='C:\1.txt';
end;

with TButton.Create(self) do begin
 Caption:='Êíîïêà 2';
 Parent:=self;
 OnClick:=Button1Click;
 fileName:='C:\2.txt';
end;

end;

end.
идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2011, 10:59   #5
Apollon61
 
Регистрация: 09.01.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Предлагаю проапгрейдить класс кнопки
Код:
unit Unit1;

interface

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

type
  TButton =class(StdCtrls.TButton)
   private
    fileName:String;
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(TButton(sender).fileName);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

with TButton.Create(self) do begin
 Caption:='Êíîïêà';
 Parent:=self;
 OnClick:=Button1Click;
 fileName:='C:\1.txt';
end;

with TButton.Create(self) do begin
 Caption:='Êíîïêà 2';
 Parent:=self;
 OnClick:=Button1Click;
 fileName:='C:\2.txt';
end;

end;

end.
идея понятна?
да идея понятна, но дело в том что у меня в текстовом файле могут добавляться строки и тем самым будут добавляться Кнопки....

Последний раз редактировалось Apollon61; 20.04.2011 в 11:00. Причина: ошибся
Apollon61 вне форума Ответить с цитированием
Старый 20.04.2011, 11:37   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

1. специально для программиста у кнопки Tbutton есть свойство Tag
2. в событии есть ссылка на объект источник (sender) (т. е. на нашу кнопку)

при создании добавляем
Код:
for i:=1 to 4 do
with TBitBtn.Create(StringGrid1) do
begin
Caption:='Кнопка';
Parent:=StringGrid1;
BoundsRect:=StringGrid1.CellRect(1, i);
OnMouseUp:=BitBtn1MouseUp;
Tag:=i;
end;
в событии используем
Код:
procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
  showmessage( inttostr( (sender as TButton).tag  );
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 20.04.2011 в 11:40.
evg_m вне форума Ответить с цитированием
Старый 20.04.2011, 11:49   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

при создании кнопки прописывайте её номер в поле tag
потом, в обработчике событий читайте файл в TStringList и вытаскивайте нужную строчку


ДОБАВЛЕНО

evg_m, простите, не видел Ваш пост... поэтому предложил аналогичное решение!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кнопка EvgenZa HTML и CSS 4 11.04.2011 17:05
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 16:58
Кнопка mr_Neon Помощь студентам 4 30.12.2010 14:54
кнопка prostac Помощь студентам 2 23.09.2010 20:31
Кнопка Obey177 Общие вопросы Delphi 24 02.09.2010 04:50