Вопрос № 146770: Какие функции преобразования типов есть в Delphi 7 (например StrToInt)?...Вопрос № 146783: Здравствуйте, уважаемые мастера. Из главной формы (Form1) по меню вызывается форма Form2: procedure TForm1.N21Click(Sender: TObject); begin if Application.FindComponent('Form2') <> nil then with Application.Find...
Вопрос № 146.770
Какие функции преобразования типов есть в Delphi 7 (например StrToInt)?
Отвечает: Edwardmm
Здравствуйте, Макаров Владимир Васильевич! Функция полно, если пишете не в блокноте то можно нажать клавиши Ctrl+пробел и начать набирать Str ,Float , int ... и вам покажут возможные вариации. (StrToIntDef() FloatToStr() StrToFloat() ...)
Ответ отправил: Edwardmm (статус: 1-ый класс)
Ответ отправлен: 11.10.2008, 10:16 Оценка за ответ: 5
Отвечает: Шичко Игорь
Здравствуйте, Макаров Владимир Васильевич! Основной перечень функций для преобразования типов можно посмотреть здесь: http://ftf.grsu.by/UchProc/konspekt/delphi/ch05 или в более компактном виде: http://na-start.narod.ru/material/delphi02.htm
Ответ отправил: Шичко Игорь (статус: 9-ый класс)
Ответ отправлен: 12.10.2008, 14:02 Оценка за ответ: 5
Вопрос № 146.783
Здравствуйте, уважаемые мастера. Из главной формы (Form1) по меню вызывается форма Form2:
procedure TForm1.N21Click(Sender: TObject); begin if Application.FindComponent('Form2') <> nil then with Application.FindComponent('Form2') as TForm2 do Show else with TForm2.Create(Application) do Show; end;
После закрытия Form2 срабатывает событие активизации Form1, в котором идет попытка удалить Form2:
procedure TForm1.FormActivate(Sender:
TObject); begin if Application.FindComponent('Form2') <> nil then with Application.FindComponent('Form2') as TForm2 do Form2.Free; end;
Но при повторном вызове Form2 эта форма не создается вновь, а открывается как будто удаления ее не было. А нужно, чтобы она вновь создавалась. Где я не прав?
Отвечает: Edwardmm
Здравствуйте, Кравцов Юрий Владимирович! При уничтожении формы нужно обнулить ещё указатель. а если форма при закрытии должна всгда уничтожатся то можно у второй формы в событии ОнКлоузе написать Action:=caFree и всё
Ответ отправил: Edwardmm (статус: 1-ый класс)
Ответ отправлен: 11.10.2008, 10:10 Оценка за ответ: 5
Отвечает: Bochvarov NikB
Здравствуйте, Кравцов Юрий Владимирович! Самое простое решение
Приложение:
Ответ отправил: Bochvarov NikB (статус: 10-ый класс)
Ответ отправлен: 11.10.2008, 10:57 Оценка за ответ: 4
Отвечает: Виктор Пырлик
Здравствуйте, Кравцов Юрий Владимирович!
Во первых, если Вы вызываете модально форму — нет необходимости её создавать при запуске приложения.. Зайдите в свойство проекта, на вкладке форм просто удалите её из автоматически создаваемых.. или откройте главный модуль программы и просто удалите строчку где она создаётся.
Во вторых, не надо так сложно, вот пример:
procedure TForm1.N21Click(Sender: Tobject); var frm:TForm2; begin frm := Tform2.Create; frm.ShowModal; end;
{если надо узнать что нажал пользватель — Ok или Cancel} procedure TForm1.N21Click(Sender: Tobject); var frm:TForm2; begin frm := Tform2.Create; if(frm.ModalResult = mrOk) then begin // что-то делаем end; end;
Во втором случае, кнопкам закрытия надо определить свойство ModalResult, или, программно это отслеживать, т.е. При нажатии кнопки, вместо Close постав
ть ModalResult := mrOk (или иное значение, которое надо)
В вашем случае, форма создана еще на стадии запуска приложения, и её можно вызвать просто Form2.ShowModal — понятно, что в этом случае она постоянно «висит» в памяти.
--------- не получается там - где не пробуют
Ответ отправил: Виктор Пырлик (статус: Профессионал) Россия, Екатеринбург Тел.: 89043822027 ICQ: 490191733 ---- Ответ отправлен: 11.10.2008, 11:31 Оценка за ответ: 3
Отвечает: Genia007
Здравствуйте, Кравцов Юрий Владимирович!
Попробуйте использовать следующий код:
procedure TForm1.N21Click(Sender: TObject); begin Application.CreateForm(TForm2, Form2); end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:= caFree; // Действие освобождения ресурсов программы end;
У себя в программах я использую именно этот код, в свойствах проекта нужно установить, чтобы TForm2 автоматически не создавалась и всё.
Ответ отправил: Genia007 (статус: 8-ой класс)
Ответ отправлен: 11.10.2008, 21:57