Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 625

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Есть две формы. Как сделать так чтобы при нажатии кнопки на форме 2 она закрывалась и открывалась 1 форма и становилась кнопка на 1 форме активной? Кнопка неактивна когда заходишь сначала на 1 форму.

Приложение:
  1.  
  2. unit Unit1;
  3.  
  4. interface
  5.  
  6. uses
  7. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  8. Dialogs, FMTBcd, DBXpress, DB, SqlExpr, Grids, DBGrids, StdCtrls,
  9. ExtCtrls, DBCtrls, DBClient, Provider, SimpleDS, Menus;
  10.  
  11. type
  12. TForm1 = class(TForm)
  13. SQLConnection1: TSQLConnection;
  14. Q1: TSQLQuery;
  15. Button1: TButton;
  16. StringGrid1: TStringGrid;
  17. procedure Button1Click(Sender: TObject);
  18. procedure FormActivate(Sender: TObject);
  19. procedure StringGrid1DblClick(Sender: TObject);
  20. procedure Button2Click(Sender: TObject);
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27. private
  28. { Private declarations }
  29. public
  30. { Public declarations }
  31. end;
  32.  
  33. var
  34. Form1: TForm1;
  35.  
  36. implementation
  37.  
  38. uses Unit2, Unit3, Unit4;
  39.  
  40. {$R *.dfm}
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51. procedure TForm1.Button1Click(Sender: TObject);
  52. begin
  53. Form4:= TForm4.Create(Application);
  54. Form4.Caption:= 'Íîâàÿ àêöèÿ';
  55. form4.Show;
  56. end;
  57.  
  58. procedure TForm1.FormActivate(Sender: TObject);
  59. var i:integer;
  60. begin
  61. try
  62. Q1.Open;
  63. except
  64. on e: exception do showmessage(e.Message);
  65. end;
  66. stringgrid1.Visible:=false;
  67. i:=1;
  68.  
  69.  
  70.  
  71.  
  72. while not Q1.Eof do
  73. begin
  74.  
  75.  
  76. StringGrid1.Cells[0,0]:= 'Àêöèÿ';
  77. StringGrid1.Cells[1,0]:= 'Îïèñàíèå';
  78. StringGrid1.Cells[2,0]:= 'Äàòà íà÷àëà';
  79. StringGrid1.Cells[3,0]:= 'Äàòà îêîí÷àíèÿ';
  80. StringGrid1.Cells[4,0]:= 'Êîëè÷åñòâî áîíóñîâ';
  81. StringGrid1.Cells[5,0]:= 'Àêòèâíûå';
  82. StringGrid1.Cells[6,0]:= 'Ïðàçäíè÷íûå';
  83.  
  84.  
  85.  
  86. stringgrid1.Cells[0,i]:=q1.Fields[0].AsString;
  87. stringgrid1.Cells[1,i]:=q1.Fields[1].AsString;
  88. stringgrid1.Cells[2,i]:=q1.Fields[2].AsString;
  89. stringgrid1.Cells[3,i]:=q1.Fields[3].AsString;
  90. stringgrid1.Cells[4,i]:=q1.Fields[4].AsString;
  91. stringgrid1.Cells[5,i]:=q1.Fields[5].AsString;
  92. stringgrid1.Cells[6,i]:=q1.Fields[6].AsString;
  93.  
  94. q1.Next;
  95. inc(i);
  96. stringgrid1.RowCount:=i+1;
  97. end;
  98. stringgrid1.Visible:=true;
  99. if q1.Active then q1.Close;
  100.  
  101. end;
  102.  
  103.  
  104.  
  105.  
  106.  
  107. procedure TForm1.StringGrid1DblClick(Sender: TObject);
  108. begin
  109. Form3:= TForm3.Create(Application);
  110. Form3.Caption:= 'Íîâàÿ àêöèÿ';
  111. form3.Show;
  112. end;
  113.  
  114. procedure TForm1.Button2Click(Sender: TObject);
  115. begin
  116. Form2:= TForm2.Create(Application);
  117. Form2.Caption:= 'Âûáîð';
  118. form2.Show;
  119. end;
  120.  
  121.  
  122.  
  123. end.
  124.  
  125.  
  126.  
  127. unit Unit2;
  128.  
  129. interface
  130.  
  131. uses
  132. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  133. Dialogs, Grids, DBGrids, DBXpress, FMTBcd, DBClient, SimpleDS, DB,
  134. SqlExpr, ExtCtrls, DBCtrls, StdCtrls;
  135.  
  136. type
  137. TForm2 = class(TForm)
  138. SQLConnection2: TSQLConnection;
  139. Q2: TSQLQuery;
  140. StringGrid2: TStringGrid;
  141. ComboBox1: TComboBox;
  142. Label1: TLabel;
  143. Label3: TLabel;
  144. ComboBox3: TComboBox;
  145. Label4: TLabel;
  146. Edit1: TEdit;
  147. Button1: TButton;
  148. RadioGroup1: TRadioGroup;
  149. Button2: TButton;
  150. procedure FormActivate(Sender: TObject);
  151. procedure Button1Click(Sender: TObject);
  152. procedure FormCreate(Sender: TObject);
  153. procedure Button2Click(Sender: TObject);
  154.  
  155.  
  156.  
  157.  
  158.  
  159. private
  160. { Private declarations }
  161. public
  162. { Public declarations }
  163. end;
  164.  
  165. var
  166. Form2: TForm2;
  167.  
  168. implementation
  169.  
  170. uses Unit4;
  171.  
  172. {$R *.dfm}
  173.  
  174.  
  175. procedure TForm2.FormActivate(Sender: TObject);
  176. var q:integer;
  177.  
  178. begin
  179. try
  180. Q2.Open;
  181. except
  182. on e:exception do showmessage(e.Message)
  183. end;
  184. stringgrid2.Visible:=false;
  185. stringgrid2.RowCount:=2;
  186. q:=1;
  187.  
  188. while not Q2.Eof do
  189. begin
  190. StringGrid2.Cells[0,0]:= 'Ôàìèëèÿ';
  191. StringGrid2.Cells[1,0]:= 'Èìÿ';
  192. StringGrid2.Cells[2,0]:= 'Îò÷åñòâî';
  193. StringGrid2.Cells[3,0]:= 'Äîìàøíèé òåëåôîí';
  194. StringGrid2.Cells[4,0]:= 'Ðàáî÷èé òåëåôîí';
  195. StringGrid2.Cells[5,0]:= 'Ìîáèëüíûé òåëåôîí';
  196. StringGrid2.Cells[6,0]:= 'Ïî÷òà';
  197. StringGrid2.Cells[7,0]:= 'Äàòà ðîæäåíèÿ';
  198. StringGrid2.Cells[8,0]:= 'Ñåìåéíîå ïîëîæåíèå';
  199. StringGrid2.Cells[9,0]:= 'Ñôåðà äåÿòåëüíîñòè';
  200. StringGrid2.Cells[10,0]:= 'Ïîë';
  201.  
  202. stringgrid2.Cells[0,q]:=Q2.fields[0].AsString;
  203. stringgrid2.Cells[1,q]:=Q2.fields[1].AsString;
  204. stringgrid2.Cells[2,q]:=Q2.fields[2].AsString;
  205. stringgrid2.Cells[3,q]:=Q2.fields[3].AsString;
  206. stringgrid2.Cells[4,q]:=Q2.fields[4].AsString;
  207. stringgrid2.Cells[5,q]:=Q2.fields[5].AsString;
  208. stringgrid2.Cells[6,q]:=Q2.fields[6].AsString;
  209. stringgrid2.Cells[7,q]:=Q2.fields[7].AsString;
  210. stringgrid2.Cells[8,q]:=Q2.fields[8].AsString;
  211. stringgrid2.Cells[9,q]:=Q2.fields[9].AsString;
  212. stringgrid2.Cells[10,q]:=Q2.fields[10].AsString;
  213.  
  214.  
  215. Q2.Next;
  216. inc(q);
  217. stringgrid2.RowCount:=q+2;
  218. end;
  219. stringgrid2.Visible:=true;
  220. if Q2.Active then Q2.Close;
  221.  
  222. combobox1.Clear;
  223. Form2.Q2.SQL.Text:='select DISTINCT family_status from owner';
  224. Form2.Q2.Open;
  225. if Form2.Q2.Active then
  226. begin
  227. Form2.Q2.First;
  228. while not q2.Eof do
  229. BEGIN
  230. Form2.ComboBox1.Items.Add(Form2.Q2.FieldByName('family_status').AsString);
  231. Form2.Q2.Next;
  232. END;
  233. q2.Close;
  234. END;
  235.  
  236.  
  237. combobox3.Clear;
  238. Form2.Q2.SQL.Text:='select DISTINCT typeorg from owner';
  239. Form2.Q2.Open;
  240. if Form2.Q2.Active then
  241. begin
  242. Form2.Q2.First;
  243. while not q2.Eof do
  244. BEGIN
  245. Form2.ComboBox3.Items.Add(Form2.Q2.FieldByName('typeorg').AsString);
  246. Form2.Q2.Next;
  247. END;
  248. q2.Close;
  249. end;
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256. end;
  257.  
  258.  
  259.  
  260.  
  261.  
  262. procedure TForm2.Button1Click(Sender: TObject);
  263. begin
  264. q2.SQL.Text:='select * from owner where DateDiff(year,date_of_birth,GetDate())='+Edit1.Text+' and family_status ='+char(39)+Combobox1.Text+char(39)+' and TypeOrg = '+char(39)+Combobox3.Text+char(39)+' and sex='+inttostr(RadioGroup1.Itemindex);
  265. q2.Open;
  266. form2.FormActivate(Sender);
  267. q2.Close;
  268. end;
  269.  
  270.  
  271.  
  272. procedure TForm2.FormCreate(Sender: TObject);
  273. var
  274. x, y, w: integer;
  275. s: string;
  276. MaxWidth: integer;
  277. begin
  278. with StringGrid2 do
  279. ClientHeight := DefaultRowHeight * RowCount + 5;
  280. randomize;
  281. with StringGrid2 do begin
  282. for y := 0 to RowCount - 1 do
  283. for x := 0 to ColCount - 1 do begin
  284. s := '';
  285. for w := 0 to random(20) do
  286. s := s + chr(ord('a') + random(26));
  287. Cells[x,y] := s;
  288. end;
  289.  
  290. Canvas.Font := Font;
  291. for x := 0 to ColCount - 1 do begin
  292. MaxWidth := 0;
  293. for y := 0 to RowCount - 1 do begin
  294. w := Canvas.TextWidth(Cells[x,y]);
  295. if w > MaxWidth then MaxWidth := w;
  296. end;
  297. ColWidths[x] := MaxWidth + 5;
  298.  
  299. end;
  300. end;
  301. end;
  302.  
  303.  
  304.  
  305. procedure TForm2.Button2Click(Sender: TObject);
  306. begin
  307. Q2.SQL.Text:='use bonus_dbTest go declare @counts int select @counts = count(distinct field_id) from act_new where active=1 if @counts<4 then begin insert into act_new() values() alter table dbo.spiski add act_4 bit not null constraint df_spiski_act_4 default 0';
  308. Form4:= TForm4.Create(Application);
  309. Form4.Caption:= '&#205;&#238;&#226;&#224;&#255; &#224;&#234;&#246;&#232;&#255;';
  310. Form4.Enabled:=true;
  311. form4.Show;
  312. q2.Close;
  313. end;
  314.  
  315. end.


slai Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: slai (статус: Посетитель)
Вопрос отправлен: 1 октября 2010, 07:53
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Тов. Женька

Здравствуйте, slai!

Например, так:

procedure TForm1.PButtonEx1Click(Sender: TObject);
begin
  Hide; // скрываем нашу форму 1
  try
    with TForm2.Create(nil) do
    begin
      ActiveControl := Button2;
      Showmodal;
    end;
  finally
    Free;
  end;
end;

Ответ отправил: Тов. Женька (статус: 3-ий класс)
Время отправки: 1 октября 2010, 08:47
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 1 октября 2010, 08:55; участников в обсуждении: 1.
Тов. Женька

Тов. Женька (статус: 3-ий класс), 1 октября 2010, 08:55 [#1]:

А не, ошибку допустил.
...
with TForm2.Create(nil) do
begin
  try
    ActiveControl := Button2;
    Showmodal;
  finally
    Free;
  end;
end;
...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:43
Выполнено за 0.03 сек.