Вниз
Скачать: CL | DM;

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

← →
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);



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
1-94507
Демон
2002-04-15 20:59
2002.04.29
Про MessageDLG


1-94394
SPeller
2002-04-16 11:59
2002.04.29
Асинхронные процедуры


4-94613
Dimitriy
2002-02-22 17:38
2002.04.29
Ctrl + Alt + Del


3-94266
Rub
2002-04-05 15:53
2002.04.29
Народ, кто-нибудь может доступным языком и в двух словах...


14-94550
copyr25
2002-03-21 22:05
2002.04.29
Удивительный феномен Древней Греции.




   Наверх