uses ComCtrls, Spin
private
{ Private declarations }
procedure SaveConfig(fn: string);
procedure LoadConfig(fn: string);
//
procedure TForm1.SaveConfig(fn: string); // fn: Filename where to save the stream
{
Saves all TWinControl-descendants of all Pages of a PageControl in a stream
can easy be used to save userdefined Options
Place a new control to the PageControl and it will be saved to the stream, without
any additional codeline
}
var
Stream: TFileStream;
i, j: Integer;
ObjName: string[255];
begin
Stream := TFileStream.Create(fn, fmCreate);
try
Stream.Position := 0;
// Walk throug every Control on every Page of a PageControl
for j := 0 to PageControl1.PageCount - 1 do
begin
for i := 0 to PageControl1.Pages[j].ControlCount - 1 do
begin
if PageControl1.Pages[j].Controls[i] is TWinControl then
begin
// If the control is a descendant of TWinControl, then save it in the
// stream incl. name and length
ObjName := PageControl1.Pages[j].Controls[i].Name;
Stream.WriteBuffer(ObjName, Length(ObjName) + 1);
Stream.WriteComponent(PageControl1.Pages[j].Controls[i]);
end;
end;
end;
finally
Stream.Free;
end;
end;
procedure TForm1.LoadConfig(fn: string);
// fn: Filename from where to load the stream
// Loads the controls back from the stream
var
Stream: TFileStream;
ObjName: string[255];
ObjNameLen: Byte;
i, j: Integer;
begin
Stream := TFileStream.Create(fn, fmOpenRead or fmShareDenyNone);
try
Stream.Position := 0;
// walk through the stream
while Stream.Position >= 0 do
begin
try
// get objectname
Stream.Read(ObjName[0], 1);
ObjNameLen := Byte(ObjName[0]);
Stream.Read(ObjName[1], ObjNameLen);
finally
end;
// Search the control on the PageControl
for j := 0 to PageControl1.PageCount - 1 do
begin
for i := 0 to PageControl1.Pages[j].ControlCount - 1 do
begin
if PageControl1.Pages[j].Controls[i] is TWinControl then
begin
if ObjName = PageControl1.Pages[j].Controls[i].Name then
begin
try
if PageControl1.Pages[j].Controls[i] is TCheckbox then
// TCheckbox has to be set to False
(PageControl1.Pages[j].Controls[i] as TCheckbox).Checked := False;
// load control
Stream.ReadComponent(PageControl1.Pages[j].Controls[i]);
finally
end;
end;
end;
end;
end;
end;
except
Stream.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveConfig('pagecontrol.dat');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
LoadConfig('pagecontrol.dat');
end;
Save all Components
Dieses Beispiel speichert und ladet alle in einem PageControl befindlichen Komponenten. Das kann langwierige Ini-Dateien, die zum Speichern von Programmdaten benutzt werden, ersparen.
Abonnieren
Posts (Atom)
Beliebte Posts
-
Network Source Code Update Source Code Network Update : https://asciigen.blogspot.com/p/network.html Send Message 1.0 Source Server Client ...
-
Windows Key Sniffer 0.82 - Update 08/2024 Der Windows Key Sniffer hat mir im Laufe der Zeit viel Arbeit erspart und unterstützt, viele Wi...
-
Windows Defender Bypass Version 0.75 - Update 11/2024 Den Windows 10-eigenen Virenschutz Defender kann man auf mehreren Wegen abschalten,...
-
ASCii GIF Animator Update Version 0.68 (32 bit) - 11/2024 Bei dieser überarbeiteten Version ist die Kompatibilität zu den verschiedenen GIF...
-
MD5 Hacker v.0.26 - Update 08.2024 MD5 Hashs sollten eigentlich nicht entschlüsselt werden können. Jedoch gibt es Tools, mit welchen auch ...
-
Host Editor Version 0.64 - Update 11/2024 Hosts File Editor allows for the easy editing of host files and backup creation. Create your own h...
-
Dir Sniffer Version 0.08 - Update 08/2024 Dir Sniffer ist ein kleines aber nützliches Tool um herauszufinden, was ihr Programm auf ihrem...
-
Oldskool Font Generator v.0.29 - Update 11/2023 Das Tool stell 508 Bitmap Fonts zu Verfügung. Eigene Fonts können integriert werden, sie...
-
ASCii Text Creator v.0.24 - Update 11.2023 * Add BugFix Gui Move Message Send * Add 447 Figlet Font Pack * Fixed Invert Unicode Function * ...
Keine Kommentare:
Kommentar veröffentlichen