Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.02.02;
Скачать: [xml.tar.bz2];

Вниз

Кнопка   Найти похожие ветки 

 
Максим   (2013-03-21 23:05) [0]

Здравствуйте. Имеются две формы. Суть в том, что вторая форма должна заменить несколько других. На 2-ой форме есть кнопка без обработки. При вызове второй формы из первой ,наждо создать событие для кнопки на 2-ой форме. как делать не знаю.Спасибо.


 
Rouse_ ©   (2013-03-21 23:07) [1]

Если я правильно понял поток мысли - проблема в том что ты не знаешь как в рантайме назначить обработчик OnClick конкретной кнопке?


 
Максим   (2013-03-21 23:14) [2]

не дописал


 
Максим   (2013-03-21 23:16) [3]

в первой форме создать событие для кнопки на 2-ой форме и передать ей.


 
Rouse_ ©   (2013-03-21 23:20) [4]


> Максим   (21.03.13 23:16) [3]
> в первой форме создать событие для кнопки на 2-ой форме
> и передать ей.

Создать событие - это ты конечно маханул.
А вот назначить существующее, конечно можно.
Покажи как пробовал сделать.


 
clickmaker ©   (2013-03-21 23:20) [5]

procedure TForm1.Form2ButtonCLick(Sender: TObject);
begin
 ShowMessage("Bingo");
end;

Form2.Button1.OnClick := Form2ButtonCLick;


 
Rouse_ ©   (2013-03-21 23:23) [6]


> clickmaker ©   (21.03.13 23:20) [5]

Воть жеж, нет чтобы довести человека до осмысления данного кода :)


 
clickmaker ©   (2013-03-21 23:25) [7]

ну так, пусть осмысливает теперь )


 
Максим   (2013-03-21 23:27) [8]

procedure TForm3.BtnDobavitClick(Sender: TObject);
begin
 Form1.OborudTable.Insert;
 DBGrid1.SetFocus;
end;

все прекрасно работает.


 
Максим   (2013-03-21 23:29) [9]

но, этот код надо перенести на form1 и что бы он передавался кнопке BtnDobavit на form3. что-то типа этого...


 
Rouse_ ©   (2013-03-21 23:34) [10]


> Максим   (21.03.13 23:29) [9]
> но, этот код надо перенести на form1 и что бы он передавался
> кнопке BtnDobavit на form3. что-то типа этого...

Сам понял что сказал?


 
Максим   (2013-03-21 23:52) [11]

а если так...
суть программы состоит в том, что заносятс данные в базу данных.
сама програма состоит ~ из 8 окон.
Это оборудование, где стоит и т.д.
каждое окно обращается к своему AdoTable.
Хочется убраь лишние окна и оставить шавлон.кнопка у каждой формы называется сохранить и имеет один и тотже код(различие только в том что обращю к разным ...Table)
Но загвоздка в том, что я не знаю как.


 
clickmaker ©   (2013-03-22 00:45) [12]

> Хочется убраь лишние окна и оставить шавлон.кнопка у каждой
> формы называется сохранить и имеет один и тотже код

создай базовую форму с этой кнопкой, наследуй остальные от нее, только переопределяй таблицу


 
Германн ©   (2013-03-22 01:41) [13]


> Хочется убраь лишние окна и оставить шавлон.кнопка у каждой
> формы называется сохранить и имеет один и тотже код(различие
> только в том что обращю к разным ...Table)
> Но загвоздка в том, что я не знаю как.
>

Добавь в эту форму свойство, которое будет характеристикой того, с каким полем таблицы она (форма) в данном случае работает. А в обработчике OnClick той самой кнопки сделай выбор вариантов с помощью оператора case.


 
Максим   (2013-03-24 18:23) [14]

а можно пример с оперрат case?

procedure TForm1.mmiOborudClick(Sender: TObject);
begin
 Form3.ShowModal;
end;

procedure TForm3.BtnDobavitClick(Sender: TObject);
begin
 Form1.OborudTable.Insert;
 DBGrid1.SetFocus;
end;

procedure TForm3.BtnSaveClick(Sender: TObject);
begin
 if Form1.OborudTable.Modified then
   Form1.OborudTable.Post;
   Close;
end;


 
Плохиш ©   (2013-03-25 00:01) [15]

Прочитай про использование методов и свойст в выбранной среде разработки.


 
Германн ©   (2013-03-25 01:23) [16]


> Максим   (24.03.13 18:23) [14]
>
> а можно пример с оперрат case?
>

Можно. Но не поймёшь.


 
Германн ©   (2013-03-25 01:38) [17]

Да и вообще. Выигрыша при замене восьми конкретно заточенных форм на одну универсальную "8 in 1" в твоём случае не будет никакого. Оставь всё как есть и не парься.


 
clickmaker ©   (2013-03-26 11:21) [18]

еще вариант: создать DataModule (в котором и будет работа с БД), вынести в него единый обработчик, а формам при создании его назначать. В параметрах обработчика можно передавать всю необходимую инфу для выбора нужной таблицы и т.д.


 
O'ShinW ©   (2013-03-26 11:40) [19]

одна процедура аля так
procedure RunSql(SQL: string; Param: array of const);
var
  i: integer;
begin
 Component.SQL.Text :=  SQL;
 for i := low(Param) to High(Param) do
   Component.parameter[i].value := Param[i];
 Component.Execute;
end;

и дергать ее
ButtonX.onclick
RunSql("insert into Table1 (:id, :name)", [42, "bla-bla"]);

ButtonY.onclick
RunSql("insert into Table2 (:id, :name, :cnt)", [3434, "bla-bla", 34]);

и тп


 
clickmaker ©   (2013-03-26 11:44) [20]

мы тут походу друг перед другом выпендриваемся ) автору нужен "оперрат case"


 
Anatoly Podgoretsky ©   (2013-03-26 15:18) [21]

> clickmaker  (26.03.2013 11:44:20)  [20]

А он как собака, все понимает, только сказать не может


 
Максим   (2013-03-27 17:42) [22]

здрасти. Я не собака, у меня ремонт. Редко включаю технику


 
Максим   (2013-03-28 00:18) [23]

Исем спасибо. ТЕМА ЗАКРЫТАю SQL я не применял.


 
Inovet ©   (2013-03-31 15:33) [24]

> [22] Максим   (27.03.13 17:42)
> Я не собака, у меня ремонт

"Первоначально он отнесся ко мне неприязненно и даже оскорблял меня, то есть думал, что оскорбляет, называя меня собакой, — тут арестант усмехнулся, — я лично не вижу ничего дурного в этом звере, чтобы обижаться на это слово"

(слова Иешуа из Мастер и Маргарита)


 
O'ShinW ©   (2013-04-01 08:40) [25]

:)
"Дружба - она ведь разная, березка.. Вот для меня собака - четвероногий друг, а для тебя - трехногий враг"
(беседа русского человека с березкой)


 
icWasya ©   (2013-04-01 12:49) [26]

>>а для тебя - трехногий враг
А почему враг? Для дерева, мо моему, как раз не враг - зверь вносит азотные удобрения. Вот для бетонного столба будет плохо.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2014.02.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.002 c
2-1364475755
ttt
2013-03-28 17:02
2014.02.02
Интерфейсы


15-1376572008
Ъ
2013-08-15 17:06
2014.02.02
Остановить GetTickCount.


15-1376597130
Разведка
2013-08-16 00:05
2014.02.02
Проявление высших сил


2-1364320406
TStas
2013-03-26 21:53
2014.02.02
Draw на канве принтера


2-1364238253
Дмитрий С
2013-03-25 23:04
2014.02.02
Как определить является один класс наследником другого?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский