Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Вниз

Как востановить размер окна при запуске программы? 


Sound   (2002-04-17 01:38) [0]

Как востановить размер окна при запуске программы, который был (размер) при предыдущем его закрытии?



VID   (2002-04-17 02:32) [1]

ВАРИАНТ А: Использовать специальный компонент из пакета RXLib.
ВАРИАНТ Б - Ini-файлы:

-------------подробнее вариант Б----------------------
uses inifiles;
...

var ini:tinifile;
.....

PROCEDURE TFORM1.onCreate(...);
begin
Ini:=TIniFile.Create (Application.ExeName+"\sets.ini");
end;

PROCEDURE TForm1.onShow(...);
begin
Form1.left := ini.readinteger ("form1", "left", 1);
Form1.top := ini.readinteger ("form1", "top", 1);
Form1.width := ini.readinteger ("form1", "width", 100);
Form1.height := ini.readinteger ("form1", "height", 100);
end;

Procedure TForm1.onDestroy (...);
begin
ini.writeinteger ("form1", "left", form1.left);
ini.writeinteger ("form1", "top", form1.top);
ini.writeinteger ("form1", "width", form1.width);
ini.writeinteger ("form1", "height", form1.height);
ini.free;
end;
---------------конец вариант Б-------------

ВАРИАНТ В - Сохранение в реестре.

--------------подробнее не будет :)--------



VID   (2002-04-17 02:35) [2]

ОШИБКА : Вместо Application.ExeName надо писать
ExtractFilePath(Application.ExrName)



Voldemar   (2002-04-17 04:09) [3]

>VID © (17.04.02 02:32)
А про вариант А поподробнее нельзя?



REA   (2002-04-17 10:19) [4]

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



kull   (2002-04-17 10:22) [5]


> А про вариант А поподробнее нельзя?

Набираешь в поисковой системе RX и Delphi и ищешь для Delphi6, а потом скачиваешь и ставишь компонент...



USAtyj   (2002-04-17 13:41) [6]


procedure SaveFormSizes(Sender:TCustomForm);
var
R:TRegistry;
begin
R:=TRegistry.Create;
try
with R do begin
RootKey:=HKEY_CURRENT_USER;
if OpenKey("\Software\MyName\MyApplication",True) then begin
WriteInteger(Sender.ClassName+"_WindowState",Integer(Sender.WindowState));
if Sender.WindowState<>wsMaximized then begin
WriteInteger(Sender.ClassName+"_Left",Sender.Left);
WriteInteger(Sender.ClassName+"_Top",Sender.Top);
WriteInteger(Sender.ClassName+"_Width",Sender.Width);
WriteInteger(Sender.ClassName+"_Height",Sender.Height);
end;
end;
end;
except
end;
R.Free;
end;

procedure RestoreFormSizes(Sender:TCustomForm);
var
R:TRegistry;
begin
R:=TRegistry.Create;
try
with R do begin
RootKey:=HKEY_CURRENT_USER;
if OpenKey("\Software\MyName\MyApplication",True) then begin
Sender.WindowState:=TWindowState(ReadInteger(Sender.ClassName+"_WindowState"));
if Sender.WindowState<>wsMaximized then begin
Sender.Left :=ReadInteger(Sender.ClassName+"_Left");
Sender.Top :=ReadInteger(Sender.ClassName+"_Top");
Sender.Width :=ReadInteger(Sender.ClassName+"_Width");
Sender.Height:=ReadInteger(Sender.ClassName+"_Height");
end;
end;
end;
except
end;
R.Free;
end;


OnCreate:
RestoreFormSizes(Self);
OnClose:
SaveFormSizes(Self);



Voldemar   (2002-04-17 13:46) [7]

>kull © (17.04.02 10:22)
RX у меня есть и даже стоИт... Но вот как им пользоваться...:)



Alx2   (2002-04-17 13:51) [8]

Из RxTools компонент TFormPlacement



USAtyj   (2002-04-17 15:26) [9]


procedure SaveFormSizes(Sender:TCustomForm);
var
R:TRegistry;
begin
R:=TRegistry.Create;
try
with R do begin
RootKey:=HKEY_CURRENT_USER;
if OpenKey("\Software\MyName\MyApplication",True) then begin
WriteInteger(Sender.ClassName+"_WindowState",Integer(Sender.WindowState));
if Sender.WindowState<>wsMaximized then begin
WriteInteger(Sender.ClassName+"_Left",Sender.Left);
WriteInteger(Sender.ClassName+"_Top",Sender.Top);
WriteInteger(Sender.ClassName+"_Width",Sender.Width);
WriteInteger(Sender.ClassName+"_Height",Sender.Height);
end;
end;
end;
except
end;
R.Free;
end;

procedure RestoreFormSizes(Sender:TCustomForm);
var
R:TRegistry;
begin
R:=TRegistry.Create;
try
with R do begin
RootKey:=HKEY_CURRENT_USER;
if OpenKey("\Software\MyName\MyApplication",True) then begin
Sender.WindowState:=TWindowState(ReadInteger(Sender.ClassName+"_WindowState"));
if Sender.WindowState<>wsMaximized then begin
Sender.Left :=ReadInteger(Sender.ClassName+"_Left");
Sender.Top :=ReadInteger(Sender.ClassName+"_Top");
Sender.Width :=ReadInteger(Sender.ClassName+"_Width");
Sender.Height:=ReadInteger(Sender.ClassName+"_Height");
end;
end;
end;
except
end;
R.Free;
end;


OnCreate:
RestoreFormSizes(Self);
OnClose:
SaveFormSizes(Self);




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.03 c
1-94353           SergeiV               2002-04-17 09:50  2002.04.29  
Windows Task Bar


1-94445           BlackJack             2002-04-13 01:11  2002.04.29  
Поддержка сериализации в Delphi.


3-94269           Reporter*             2002-04-07 21:59  2002.04.29  
Вопросы, связанные с Fast Report


14-94556          BAHO                  2002-02-21 05:14  2002.04.29  
Самая злая проблемма !


3-94270           almikhb               2002-04-08 03:56  2002.04.29  
Печать стркутуры Базы Данных