Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
ВнизВ Form2 получается строка, которую нужно передать в Form1 Найти похожие ветки
← →
Fynjy (2008-09-05 10:32) [0]Привет всем! Есть такой проект, в нем много всяких форм, окон. Предположим есть Form1, и Form2 которая вызавается из Form1 немодально по верх всех окон. В Form2 получается строка, которую нужно передать в Form1, при закрытии Form2. Обычно типа
Form1.Edit1.text:= Form2.Edit1.text не получается. Подскажите, как можно это сделать по грамотному?
← →
zorik © (2008-09-05 10:39) [1]Как вызываешь? Почему не получается, какая ошибка?
← →
Сергей М. © (2008-09-05 10:39) [2]
> не получается
Что конкретно не получается ?
← →
Юрий Зотов © (2008-09-05 10:40) [3]> Form1.Edit1.text:= Form2.Edit1.text не получается
Почему? Должно получаться. Или так можно:
TForm1 = class(TForm)
...
public
Str: string;
end;
И при закрытии Form2 пишем: Form1.Str := "строка"; Теперь форма Form1 может эту строку использовать.
← →
Vlad Oshin © (2008-09-05 10:41) [4]
> Обычно типа
> Form1.Edit1.text:= Form2.Edit1.text не получается.
почему это?
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
form1.button1.caption:="sdsd";
CanClose:=true;
end;
← →
evvcom © (2008-09-05 10:42) [5]По грамотному - не использовать переменные Form1 и Form2, но для начинающего это может быть и сложно. А по неграмотному ты уже написал, и это должно работать. Видимо, ты где-то начудил в другом месте. Бряк поставь на эту строчку и посмотри, программа на нем спотыкается?
← →
zorik © (2008-09-05 10:43) [6]Незнаю наскоко грамотно, но можно создать отдельный модуль с описанием всех глобальних переменных, включить его в Form1 и Form2 и передавать значения через эти переменные. Но это зависит от конкретной задачи. Может нет надобности так сложно.
← →
evvcom © (2008-09-05 10:44) [7]
> Vlad Oshin © (05.09.08 10:41) [4]
> procedure TForm2.FormCloseQuery
а почему OnCloseQuery? Почему не OnClose? Ты же не собираешься препятствовать ее закрытию.
← →
evvcom © (2008-09-05 10:45) [8]
> zorik © (05.09.08 10:43) [6]
> Незнаю наскоко грамотно
Очень неграмотно
← →
zorik © (2008-09-05 10:47) [9]
> Очень неграмотно
Если, например, форм много и куча параметров, скажем настройки. Не клас же создавать начинающему сразу
← →
Медвежонок Пятачок © (2008-09-05 10:51) [10]Правильно сделать форму модальной.
← →
zorik © (2008-09-05 10:52) [11]Если немодально и поверх всех окон, то это может быть какая-то панель инструментов. Нужно знать предмет
← →
Медвежонок Пятачок © (2008-09-05 10:55) [12]форма которая поверх всех и при закрытии которой кто-то ожидает значение - верный кандидат на модальность
← →
Vlad Oshin © (2008-09-05 11:00) [13]
> evvcom © (05.09.08 10:44) [7]
> почему OnCloseQuery?
у меня своя свадьба, экспериментирую
← →
Fynjy (2008-09-05 11:01) [14]вот форма2
procedure AdvancedSearchShow;
begin
with TAdvancedSearchForm.Create(Application) do
begin
BBB;
Show;
end;
end;
в uses я прописал все как надо. В процедуре ВВВ получаем сторку, и при закрыти " закрыть" она не передается, вот и все
то что написал Юрий Зотов не катит я пытаюсь вставить строку в Edit но там пусто
← →
Сергей М. © (2008-09-05 11:04) [15]
> Fynjy (05.09.08 11:01) [14]
см.
http://delphimaster.net/view/2-1220507763/
p.s. Что за клоунская буффонада с никами ?
← →
Fynjy (2008-09-05 11:15) [16]я просил друга, но сказал что не опубликовал ничего
← →
Vlad Oshin © (2008-09-05 11:19) [17]покажи обе формы
← →
Сергей М. © (2008-09-05 11:24) [18]
> сказал что не опубликовал ничего
Не понял, кто кому что сказал и кто что не опубликовал ?
Странные вы "друзья", однако ..
Покажи текст BBB - посмотрим, друзья вы или не друзья) ..
← →
Fynjy (2008-09-05 11:28) [19]вот код формы2
procedure AdvancedSearchShow;
begin
with TAdvancedSearchForm.Create(Application) do
begin
BBB;
Show;
end;
end;
function TAdvancedSearchForm.BBB: Boolean;
var
fhh:TMainFrame;
begin
fhh:=TMainFrame.Create(nil);
try
with fhh.IBQParam do
begin
SQL.Clear;
SQL.Add("select distinct PAR_NAME, PAR_ID from PAR where PAR_NAME <> :str order by PAR_NAME ");
ParamByName("str").AsString := "";
Open;
First;
while not Eof do
begin
ComboBox1.Items.AddObject( FieldByName("PAR_NAME").AsString,
Pointer( FieldByName("PAR_ID").AsInteger) );
Next;
end;
Close;
end;
finally
fhh.free;
end;
end;
и вот как получается строкаprocedure TAdvancedSearchForm.Button3Click(Sender: TObject);
begin
if length(ComboBox1.Text) = 0 then
begin
ShowMessage("Ââåäèòå íàèìåíîâàíèå ïàðàìåòðà!");
exit;
end;
if length(Edit1.Text) = 0 then
begin
ShowMessage("Çíà÷åíèå íå ìîæåò áûòü ïóñòûì!" + #13 +" Ââåäèòå çíà÷åíèå!");
exit;
end;
if parsearch = "" then
begin
parsearch := "(nmk_par.Par_id = " + IntToStr( Integer( ComboBox1.Items.Objects[ComboBox1.ItemIndex]) ) + " and" +
" nmk_par.nmk_par_value containing " + Edit1.Text+ ")" ;
end
else
parsearch := parsearch + " and (nmk_par.Par_id = " + IntToStr( Integer( ComboBox1.Items.Objects[ComboBox1.ItemIndex]) ) + " and" +
" nmk_par.nmk_par_value containing " + Edit1.Text+ ")";
with ListView1.Items.Add do
begin
Caption := ComboBox1.Text;
with SubItems do
Add(Edit1.Text);
end;
Button1.Enabled:=true;
Button4.Enabled:=true;
Edit2.Text:= parsearch;
end;
← →
Сергей М. © (2008-09-05 11:33) [20]
> Fynjy (05.09.08 11:28) [19]
С вами, "друзьями", все ясно - чукчи-писатели)
Здесь
http://delphimaster.net/view/2-1220507763/
твоему "другу" все разжевано, осталось только прочитать и вникнуть.
← →
Fynjy (2008-09-05 11:43) [21]да при чем тут Query? мне просто нужна строка из формы 2, а Query я в фрейме попользую.
← →
Сергей М. © (2008-09-05 11:49) [22]Ну и где в твоем коде собственно строка
Form1.Edit1.text:= Form2.Edit1.text
?
← →
Сергей М. © (2008-09-05 11:53) [23]
> при чем тут Query
Совершенно ни причем)
Query - это просто некий существующий объект в Форме1, к которому требуется получить доступ из методов Формы2.
← →
brother © (2008-09-05 11:54) [24]> Form1.Edit1.text:= Form2.Edit1.text не получается.
по этому поводу...
в Form1 uses добавь то что написано в unit form2 (например: unit2), а в
Form2 uses добавь то что написано в unit form1 (например: unit1) теперь ты можешь сделать так:
в form1: Form1.Edit1.text:= Form2.Edit1.text
или в form2: Form1.Edit2.text:= Form1.Edit1.text
коряво, но как вариант пойдет?
← →
Юрий Зотов © (2008-09-05 11:59) [25]Боже...
:-(
← →
brother © (2008-09-05 12:01) [26]> Боже...
> :-(
Как предупреждал журнал: Здоровье - нервные клетки не восстанавливаются ;)
← →
Медвежонок Пятачок © (2008-09-05 12:04) [27]конкурс на самый взаимозависимый между модулями и самый неподдерживаемый код?
← →
brother © (2008-09-05 12:07) [28]главное, чтоб победила дружба!
← →
Ega23 © (2008-09-05 12:11) [29]
> конкурс на самый взаимозависимый между модулями и самый
> неподдерживаемый код?
в качестве пятничной задачки предложи, в "потрепаться".
← →
Плохиш © (2008-09-05 12:11) [30]Прикольно
Dagir © (04.09.08 11:27) [18]
ну, будем посмотреть
вылилось в
> Fynjy (05.09.08 10:32)
> Привет всем!
:-))
PS. Дети, вам бы пора нанять программиста.
← →
Сергей М. © (2008-09-05 12:33) [31]
> Плохиш © (05.09.08 12:11) [30]
Видать, "друзья" поссорились и больше не общаются)
Будем надеяться, что хоть не поколотили друг-друга - тема-то довольно важная)
← →
Fynjy (2008-09-05 13:13) [32]Удалено модератором
← →
Сергей М. © (2008-09-05 13:25) [33]Удалено модератором
← →
Anatoly Podgoretsky © (2008-09-05 14:26) [34]> Плохиш (05.09.2008 12:11:30) [30]
Откуда у детей деньги?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.046 c