![]() |
Position von Programmfenster in *.ini speichern?
Hallo,
ich versuche gerade die geänderte Position eines Formulars in eine *.ini zu speichern. Das speichern an sich ist auch kein Problem und funktioniert, nur bei einem erneuten Aufruf soll das Programm wieder an der Position angezeigt werden an der es das letzte Mal beendet wurde und das tut es nicht. Vielleicht kann man die Position "left" und "top" direkt in eine *.ini schreiben, ich bin aber den Umweg über 2 Edits gegangen die die Position auslesen und speichern. Code:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject); var savestat: TIniFile; begin savestat := TIniFile.Create(ExtractFilepath(Application.Exename)+'settings.ini'); try Edit1.Text := savestat.ReadString('Left','Status1',Edit1.Text); Edit2.Text := savestat.ReadString('Top','Status1',Edit2.Text); finally savestat.Free; end; If RadioBox1.Checked then Form1.Left := StrToInt(Edit1.Text); Form1.Top := StrToInt(Edit2.Text); end; procedure TForm1.FormDestroy(Sender: TObject); var savestat: TIniFile; begin Edit1.Text := IntToStr(Form1.Left); Edit2.Text := IntToStr(Form1.Top); savestat := TIniFile.Create(ExtractFilepath(Application.Exename)+'settings.ini'); try savestat.WriteString('Left','Status1',Edit1.Text); savestat.WriteString('Top','Status1',Edit2.Text); finally savestat.Free; end; end; |
Re: Position von Programmfenster in *.ini speichern?
Hallo Tim,
global
Delphi-Quellcode:
(fMain = Hauptformular)
CONST
... SectionSystem = 'System'; KeyFormLeft = 'FormLeft'; KeyFormTop = 'FormTop'; ... schreiben (z.B. in FormDestroy/Close)
Delphi-Quellcode:
lesen (z.B. in FormCreate)
IniFile.WriteInteger(SectionSystem, KeyFormLeft, fMain.Left);
IniFile.WriteInteger(SectionSystem, KeyFormTop, fMain.Top);
Delphi-Quellcode:
fMain.Left:= IniFile.ReadInteger(SectionSystem, KeyFormLeft, 0);
fMain.Top:= IniFile.ReadInteger(SectionSystem, KeyFormTop, 0); |
Re: Position von Programmfenster in *.ini speichern?
Das Widerherstellen der Position kann nicht im OnCreate Ereignis erledigt werden, weiche einfach auf das OnActivate Ereignis aus, dann sollte es klappen.
...:cat:... |
Re: Position von Programmfenster in *.ini speichern?
Zitat:
Delphi-Quellcode:
Kein Problem unter D6 im OnCreate-Ereignis.
form1.Left := 1;
form1.Top := 1; |
Re: Position von Programmfenster in *.ini speichern?
Hallo,
bei mir funkts auch (D7Ent). |
Re: Position von Programmfenster in *.ini speichern?
Hallo,
klappt leider immer noch nicht. Wobei ich sagen muss das Form1.Position auf "poDesktopCenter" steht. Wenn ich die Position auf "poDesigned" stelle, wird es auch nicht an der geänderten Position angezeigt sondern bei Left: 1 / Top: 1 (obwohl es im Designmodi ca. in der Mitte steht) |
Re: Position von Programmfenster in *.ini speichern?
Zitat:
Zitat:
|
Re: Position von Programmfenster in *.ini speichern?
Ja hab ich, und das OnCreate ist jetzt das OnActivate Ereignis. Form1.Pos ist auf "poDesigned" gestellt. Fenster wird aber immer wie designed angzeigt, auch wenn die Position geändert wurde.
|
Re: Position von Programmfenster in *.ini speichern?
Erstelle ein neues leeres Projekt. Mach ein Doppelklick auf onCreate und schreibe
Delphi-Quellcode:
und drücke F9. Wie ist das Ergebnis?
procedure TForm1.FormCreate(Sender: TObject);
begin form1.Left := 100; form1.Top := 100; end; |
Re: Position von Programmfenster in *.ini speichern?
Ergebnis ist:
vom linken Bildschirmrand: 100 vom oberen Bildschirmrand 100 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz