Как расположить форму, прежде чем она покажет?

  1. Установка последний пакет обновления. Обычно, я воздушный поток это так или иначе.

  2. Препятствуют тому, чтобы приложения крали фокус. http://xphelpandsupport.mvps.org/how_do_i_prevent_applications_fr.htm

  3. Копия мои приложения командной строки ( основные команды Unix ) и приложения SysInternals .

  4. Windows Updates

  5. инструменты разработчика Установки как Visual Studio, Eclipse, VirtualBox, и т.д.

  6. я больше склоняюсь к наличию основанных на сервисе приложений как SQL Server быть установленным на основе, выровнял Виртуальную машину и работал оттуда. Тем путем у меня только есть он выполнение, когда я должен, и я могу расширить жизнь производительности своей установки Windows.

5
задан Cobus Kruger 3 November 2009 в 13:04
поделиться

5 ответов

Ну, очевидно, что для решения точно предусмотрено наследование формы проблема, которую вы пытаетесь решить. Любое решение, вероятно, каким-то образом имитирует наследование формы.

Не могли бы вы сделать что-нибудь настолько простое, как глобальный поиск в вашем коде "= class (TForm)" и замена класса TForm либо вашей существующей базовой формой, либо новый, упрощенный базовый класс формы с только той функциональностью, которая вам нужна?

В противном случае вы можете попытаться изменить сам исходный класс TForm, чтобы иметь желаемое поведение позиционирования. Очевидно, изменение предоставленных классов немного опасно.

5
ответ дан 14 December 2019 в 01:10
поделиться

Если вы не собираетесь использовать общую базовую форму, я бы посоветовал разместить невизуальный компонент в каждой форме. Этот компонент может привнести желаемое поведение в базовую форму. Если вы хотите иметь различное поведение в разных формах, дайте вашему компоненту свойство роли, которое определяет, какую роль должна иметь эта форма, и затем он может вводить различные характеристики на основе этой роли.

Кстати, у вас также может быть невизуальное наследование форм, что является моим предпочтительным методом создания общего базового класса для всех форм. Он также имеет преимущество добавления свойств в форму, а затем на основе этих свойств вы можете изменить роль или поведение формы.

4
ответ дан 14 December 2019 в 01:10
поделиться

Не зная больше о вашем приложении,Я бы посоветовал добавить код позиционирования к каждой форме индивидуально - преимущества отсутствия базового класса заключаются в том, что это упрощает создание определенных форм, которые работают немного по-другому, и сохраняет всю логику формы вместе в одном место.

0
ответ дан 14 December 2019 в 01:10
поделиться

Обычно я использую для этого событие FormShow, используя процедуру SetBounds (). С другими элементами управления, не относящимися к форме, вы можете сделать то же самое, переопределив сообщение CMShowing.

0
ответ дан 14 December 2019 в 01:10
поделиться

I took your idea of OnModalBegin and ran with it. The following is a "Hack", but it seems to work. To test simply drag around the form and click the button.

procedure TMainForm.Button1Click(Sender: TObject);
var
  mForm: TForm;
begin
  mForm := TForm.create(self);
  mform.width := 300;
  mform.height := 300;
  mForm.ShowModal;
  mForm.Free;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  application.OnModalBegin := modalbegin;
end;

procedure TMainForm.FormShow(Sender: TObject);
begin
  if Screen.FormCount>1 then begin
    screen.forms[Screen.FormCount-1].left := round((screen.forms[Screen.FormCount-2].left + screen.forms[Screen.FormCount-2].width/2) - screen.forms[Screen.FormCount-1].width/2);
    screen.forms[Screen.FormCount-1].top := round((screen.forms[Screen.FormCount-2].top + screen.forms[Screen.FormCount-2].height/2) - screen.forms[Screen.FormCount-1].height/2);
    application.processmessages;
    screen.forms[Screen.FormCount-1].Caption  := inttostr(screen.forms[Screen.FormCount-1].top)+','+inttostr(screen.forms[Screen.FormCount-1].left);
  end;
end;

procedure TMainForm.ModalBegin(Sender: TObject);
begin
  if Screen.FormCount>=0 then
    screen.forms[Screen.FormCount-1].OnShow := FormShow;
end;
0
ответ дан 14 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: