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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2010, 03:50   #1
slai
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 21
По умолчанию Таблица и строки

Добрый день. У меня такой вопрос. Возможно ли сделать так чтобы при нажатии на строке в таблицы открывалась форма, и для каждой строки отдельная форма? Если да то прошу написать как это делается.
slai вне форума Ответить с цитированием
Старый 30.09.2010, 05:28   #2
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

какая именно таблица StringGrid или DBGrid.
Если DBGrid то у него есть событие OnCellClik вроде так.
там пишешь следующие
Код:
Form2.show;
чтоб открывалась для каждой строки новая то форму нужно создавать программно это к сожелению не подскажу.
Lokos вне форума Ответить с цитированием
Старый 30.09.2010, 06:24   #3
slai
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 21
По умолчанию

Спасибо, но у меня StringGrid как для него делать?
slai вне форума Ответить с цитированием
Старый 30.09.2010, 07:44   #4
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от slai Посмотреть сообщение
Спасибо, но у меня StringGrid как для него делать?
ну у него есть свойство OnMouseDown на его событие получаем координаты курсора. вычесляем разницу с координатами начала stringgrida . смотрим какой длины и ширины строки. делем координату y на ширину строки получаем количество строк до координаты и номер строки а дальше как работать с обычным стринг гридом. Наверное как то так. Может есть способ и проще
Lokos вне форума Ответить с цитированием
Старый 30.09.2010, 07:45   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если по простому то опиши OnDblClick грида так:
Код:
procedure TForm1.StringGrid1DblClick(Sender: TObject);
begin
 if StringGrid1.Row=тому-то then
 with TForm2.Create(Application) do begin
  Show;
 end;

 if StringGrid1.Row=тому-то then
 with TForm3.Create(Application) do begin
  Show;
 end;
...
 и т.д. 
end;
Тут создается анонимная форма, и показывается на экран.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2010, 07:50   #6
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от slai Посмотреть сообщение
Спасибо, но у меня StringGrid как для него делать?
ой затупил тебе же открытие формы нужно а не получение номера строки извеняюсь))) тогде на OnDblClik или на OnCelSelect

Последний раз редактировалось Lokos; 30.09.2010 в 07:52.
Lokos вне форума Ответить с цитированием
Старый 30.09.2010, 08:07   #7
slai
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 21
По умолчанию

Спасибо за помощь.
slai вне форума Ответить с цитированием
Старый 30.09.2010, 08:13   #8
slai
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 21
По умолчанию

У меня еще один вопрос.
Есть форма на ней расположены кнопка, stringgrid, combobox. Надо сделать так чтобы при выборе в combobox название акции и нажатии на кнопку в таблице показывала даные по участникам в акции. Вот код:
unit Unit3;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBXpress, FMTBcd, DB, SqlExpr, Grids, StdCtrls;

type
TForm3 = class(TForm)
StringGrid3: TStringGrid;
SQLConnection1: TSQLConnection;
Q3: TSQLQuery;
Button1: TButton;
ComboBox1: TComboBox;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.FormActivate(Sender: TObject);
var d:integer;
begin
try
Q3.Open;
except
on e:exception do showmessage(e.Message)
end;
stringgrid3.Visible:=false;
stringgrid3.RowCount:=2;
d:=1;

while not Q3.Eof do
begin
StringGrid3.Cells[0,0]:= 'Номер карты';
StringGrid3.Cells[1,0]:= 'Акция';


stringgrid3.Cells[0,d]:=Q3.fields[0].AsString;
stringgrid3.Cells[1,d]:=Q3.fields[1].AsString;


Q3.Next;
inc(d);
stringgrid3.RowCount:=d+2;
end;
stringgrid3.Visible:=true;
if Q3.Active then Q3.Close;


combobox1.Clear;
Form3.Q3.SQL.Text:='select name from act_new';
Form3.Q3.Open;
if Form3.Q3.Active then
begin
Form3.Q3.First;
while not q3.Eof do
BEGIN
Form3.ComboBox1.Items.Add(Form3.Q3. FieldByName('name').AsString);
Form3.Q3.Next;
END;
q3.Close;


end;
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
q3.SQL.Text:='select card_number, act_0 from spiski where name='+inttostr(combobox1.ItemIndex )+'';
q3.Close;
end;

procedure TForm3.ComboBox1Change(Sender: TObject);
begin
q3.SQL.Text:='select card_number, act_'+inttostr(combobox1.ItemIndex) +' from spiski where act_'+inttostr(combobox1.ItemIndex) +'=1';
q3.Open;

end;

end.

Последний раз редактировалось slai; 30.09.2010 в 08:16.
slai вне форума Ответить с цитированием
Старый 30.09.2010, 09:14   #9
slai
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если по простому то опиши OnDblClick грида так:
Код:
procedure TForm1.StringGrid1DblClick(Sender: TObject);
begin
 if StringGrid1.Row=тому-то then
 with TForm2.Create(Application) do begin
  Show;
 end;

 if StringGrid1.Row=тому-то then
 with TForm3.Create(Application) do begin
  Show;
 end;
...
 и т.д. 
end;
Тут создается анонимная форма, и показывается на экран.
За место тому-то что надо писать?
slai вне форума Ответить с цитированием
Старый 30.09.2010, 09:20   #10
XeruH
Форумчанин
 
Регистрация: 17.09.2010
Сообщений: 229
По умолчанию

Цитата:
Сообщение от slai Посмотреть сообщение
За место тому-то что надо писать?
Я так думаю номер строки?!? только учти что нумерация начинается с 0.
Правильно заданный вопрос - половина ответа!
XeruH вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблица в C# (не БД) mopozoff Общие вопросы .NET 6 15.11.2015 00:15
Таблица... Streb Общие вопросы C/C++ 2 12.01.2010 17:45
Таблица Настенька..Блонди Помощь студентам 3 07.01.2009 18:16