![]() |
Combobox Einstellungen Speichern
Hallo,
bin auf dem Gebiet Delphi relativer Anfänger. Habe jetzt 2 Stunden in google gesucht und bin auch fündig geworden aber irgendetwas mache ich Falsch. Brauche dringend Hilfe. Meine Lage: Habe eine Combobox erstellt und diese Funktioniert auch soweit. Diese Combobox ändert die Hintergrundfarbe eines Memo Fensters. Jetzt möchte ich es aber machen, dass ich auf Speichern klicken kann und der das dann speichert und auf laden und er die letzte Hintergrundfarbe lädt. Dies möchte ich sehr gerne mit einer ini Datei machen. Meine Probleme: - Weiss nicht was besser ist zu speichern: Entweder den Wert der Combobox oder den Wert des Hintergrundes des Memo-Feldes. - Auch wenn ich mich für eins entscheide habe ich Probleme. Mein Versuch: Hier die Procedure zum Speichern:
Code:
Und hier zum Laden:
procedure TForm1.Button1Click(Sender: TObject);
var ini: TIniFile; begin ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'einstellungen.ini'); Ini.WriteInteger('Hintergrund', 'Farbe', Memo1.Color); end;
Code:
procedure TForm1.Button2Click(Sender: TObject);
var ini: TIniFile; begin ini:=TIniFile.Create('einstellungen.ini'); try memo1.color := ini.ReadInteger('Hintergrund', 'Farbe', clwhite); finally ini.free; end; end; Kann sein, dass ich einen ganz dummen Fehler mache. Aber bitte nicht auslachen. Würde mich über eine Antwort sehr freuen :) Gr33tz! Tigerhead PS: Da ich neu in dieser Community bin, hoffe ich, dass mein Beitrag gegen keine Regeln verstößt. |
Re: Combobox Einstellungen Speichern
Moin Tigerhead,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Als erstes möchte ich Dich mal beruhigen: Ich kann keinen Regelverstoss ausmachen ;-) Nun aber mal zu Deinem Problem. Ich halte es für sinnvoll nicht die Farbe des Memo, sondern den gewählten Wert der ComboBox zu speichern, da dies ja auch dem Programmablauf entspricht. Hier bedingt eine Auswahl aus der ComboBox eine Änderung der Farbe des Memofeldes. Leider hast Du nicht geschrieben, wie Du die Werte in der ComboBox speicherst. Solltest Du es so machen (Style der ComboBox auf csDropDownList)
Delphi-Quellcode:
könntest Du einfach direkt ComboBox1.ItemIndex in der Ini speichern, und auch wieder auslesen.
ComboBox1.Items.AddObject('Blau',TObject(clBlue));
Dann fehlt nur noch das Zuweisen der Farbe im OnChange Ereignis der ComboBox. BTW: Beim Speichern fehlt der Try/Finally Block, und bei Laden der Pfad. |
Re: Combobox Einstellungen Speichern
Erstmal willkommen in der DP :hi:
1. Was für Probleme treten denn genau auf? Dass du dich nicht entscheiden kannst, was besser ist? 2. Beim Speichervorgang hast du die Variable ini nicht freigegeben(bin ja selbst Anfänger, kenn mich damit nicht so gut aus, ist mir aber mal aufgefallen ;) ) ;) |
Re: Combobox Einstellungen Speichern
Hey alle da drausen!
Ich bin auch neu hier, aber ich programmiere schon etwas länger mit Delphi! Delphi ist einfach sau geil.*g* Ich hatte mal das gleiche Problem und ich hoffe, dass ich helfen kann. Ich weiß leider nicht genau was du haben willst aber ich glaub ich habe eine Lösung. :thumb: Es gibt die Möglichkeit, den Text der ComboBox1 zu speichern bzw. zu laden. :gruebel: Ist ganz einfach: Ich erklär mal ganz kurz: einal für das Speichern:
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject);
var inidat : TInifile; begin IniDat := TIniFile.Create('.\Farbeneinstellungen.Ini'); with inidat do begin WriteString('Einstellungen','Farbe',ComboBox1.Text); end; end; und natürlich zum Laden:
Delphi-Quellcode:
Jetzt brauchst du nur noch eine Prozedur zum Auswerten.
procedure TForm1.FormCreate(Sender: TObject);
var inidat : TInifile; begin IniDat := TIniFile.Create('.\Farbeneinstellungen.Ini'); with inidat do begin ComboBox1.Text := ReadString('Einstellungen','Farbe',ComboBox1.Text); end; end; Es gibt auch noch eine andere, wahrscheinlich bessere Lösung: Durch Ordinaltypen!!! Ich stelle einfach mal den kompletten Quelltext rein. Den hab ich extra schnell entworfen. Extra für dich! :-D
Delphi-Quellcode:
Hier habe ich einfach einen Typ dekleriert.
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Inifiles; type TFarben = (TF_blau, TF_gelb, TF_rot, TF_gruen); type TForm1 = class(TForm) ComboBox1: TComboBox; Button1: TButton; Button2: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } Farbe : TFarben; procedure setzeFarbe; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.setzeFarbe; begin case Farbe of TF_blau: Memo1.Color := clblue; TF_gelb: Memo1.Color := clYellow; TF_gruen: Memo1.Color := cllime; TF_rot: Memo1.Color := clred; end; end; procedure TForm1.Button1Click(Sender: TObject); var inidat : TInifile; begin inidat := TInifile.Create('.\Test.Ini'); with inidat do begin WriteInteger('SpTest','SpTest', Ord(Farbe)); end; end; procedure TForm1.Button2Click(Sender: TObject); var inidat : TInifile; var auswahl : integer; begin inidat := TInifile.Create('.\Test.Ini'); with inidat do begin auswahl := ReadInteger('SpTest','SpTest', Ord(Farbe)); end; case auswahl of 0: begin Farbe := TF_blau; ComboBox1.Text := 'BLAU'; end; 1: begin Farbe := TF_gelb; ComboBox1.Text := 'GELB'; end; 2: begin Farbe := TF_rot; ComboBox1.Text := 'ROT'; end; 3: begin Farbe := TF_gruen; ComboBox1.Text := 'GRÜN'; end; end; setzeFarbe; end; procedure TForm1.ComboBox1Change(Sender: TObject); begin if ComboBox1.Text = 'BLAU' then Farbe := TF_blau; if ComboBox1.Text = 'GELB' then Farbe := TF_gelb; if ComboBox1.Text = 'ROT' then Farbe := TF_rot; if ComboBox1.Text = 'GRÜN' then Farbe := TF_gruen; setzeFarbe; end; end. Nicht vergessen: Die Ordinaltypen fangen immer bei 0 an! Ich kann das jetzt leider nicht ganz erklären. Wenn jemand Hilfe braucht, soll er mir einfach eine E-Mail schreiben : ich@patti-k.de! Viel Spaß! Ich hoffe ich habe keine Fehler gemacht! Schreibt mir halt einfach, ob es hinhaut oder nicht. :stupid: |
Re: Combobox Einstellungen Speichern
Hallo,
habe mir alle Antworten durchgelesen und erstmal ein GANZ DICKES Dankeschön an euch alle. Am meisten geholfen hat mir Patty. Danke, dass du mir das geschrieben hast :) Es funktioniert jetzt alles Wunderbar *freu*. Das mache ich jetzt mit 10 Farben und für jeweils 6 Combobox´s ;) Also eine Menge Arbeit für einen Anfänger wie mich. Wenn ich Probleme haben werde ich mich nicht scheuen euch diese mit zu teilen. Klasse Community :thumb: Gr33tz! Tigerhead |
Re: Combobox Einstellungen Speichern
Moin Patti,
auch Dir erst einmal ein herzliches Willkommen hier in der Delphi-PRAXiS. Schau Dir doch noch einmal meine Lösung zu dem Problem an. Es lassen sich die Farbe und der Text in den ComboBox Items zusammenfassen, ohne noch einen weiteren Typ deklarieren zu müssen. |
Re: Combobox Einstellungen Speichern
Mhh war wohl zu voreilig. So wie es mir der Patty geschrieben hat, kann mir das vllt jemand anderes auch schreiben ? Brauche es aber für 6 Comboboxen :(.
Combobox1 Memo1.color Combobox2 ListBox1.color Combobox3 Mitteilung.color Combobox4 Memo1.Font.Color Combobox5 ListBox1.Font.Color Combobox6 Mitteilung.Font.Color Hoffentlich kann man das irgendwie zusammen fassen, denn das ist ein riesen durcheinander so :( Es geht zwar von Patty aber macht alles unübersichtlich, sorry Patty. Wäre wirklich SUPER nett wenn mir das jmd machen könnte. Nicht weil ich zu Faul bin sondern zu dumm das zusamen zu fassen :oops:. Sorry für die Anfrage *heul* |
Re: Combobox Einstellungen Speichern
Habe bis jetzt das hier:
Code:
Komme echt nicht weiter :( und wer auf die Uhrzeiten meines Posts guckt sieht auch, dass ich bereits Stunden da dran bin *heul* :wall: .. wäre sehr nice wenn mir einer helfen könnte.
function GetColor(idx: Integer): TColor;
begin case idx of 0 : result := clWhite; 1 : result := clBlack; 2 : result := clRed; 3 : result := clYellow; 4 : result := clBlue; 5 : result := clGreen; 6 : result := clGray; 7 : result := clSilver; 8 : result := clOlive; 9 : result := clMaroon; 10 : result := clNavy; end; end; procedure TForm1.Combobox1Change(Sender: TObject); begin Memo1.color := getcolor(Combobox1.ItemIndex); end; procedure TForm1.ComboBox2Change(Sender: TObject); begin ListBox1.color := getcolor(Combobox2.ItemIndex); end; procedure TForm1.ComboBox3Change(Sender: TObject); begin Mitteilung.color := getcolor(Combobox3.ItemIndex); end; procedure TForm1.ComboBox4Change(Sender: TObject); begin Memo1.Font.Color := getcolor(Combobox4.ItemIndex); end; procedure TForm1.ComboBox5Change(Sender: TObject); begin ListBox1.Font.Color := getcolor(Combobox5.ItemIndex); end; procedure TForm1.ComboBox6Change(Sender: TObject); begin Mitteilung.Font.Color := getcolor(Combobox6.ItemIndex); end; Gr33tz! Tigerhead |
Re: Combobox Einstellungen Speichern
Hai,
ich habe mal schnell das hier getippelt. Die Zuordnung welche ComboBox bei was die Farbe ändert mache ich einfach über die TAG-Eigenschaft der Combobox. Bei mir ist: Tag = 0 = Memo1 Tag = 1 = ListBox1 Das sollte sich leicht erweitern lassen ;-)
Delphi-Quellcode:
P.S.: Allen Comboboxen ist das selbe OnChange-Ereigniss zugewiesen.
procedure TForm1.FormCreate(Sender: TObject);
var ini : TIniFile; begin ComboBox1.Clear; ComboBox2.Clear; ComboBox1.Items.AddObject('blau',TObject(clblue)); ComboBox1.Items.AddObject('rot',TObject(clred)); ComboBox1.Items.AddObject('grün',TObject(clgreen)); ComboBox2.Items.Assign(ComboBox1.Items); // Einträge in zweite CB kopieren ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'farben.ini'); try ComboBox1.ItemIndex := ini.ReadInteger('farben','memo1',0); ComboBox2.ItemIndex := ini.ReadInteger('farben','listbox1',0); finally ini.Free; end; ComboBox1.OnChange(ComboBox1); // Das OnChange auslösen ComboBox1.OnChange(ComboBox2); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var ini : TIniFile; begin ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'farben.ini'); try ini.WriteInteger('farben','memo1',ComboBox1.ItemIndex); ini.WriteInteger('farben','listbox1',ComboBox2.ItemIndex); finally ini.Free; end; end; procedure TForm1.AlleComboBoxChange(Sender: TObject); var myCombo : TComboBox; begin mycombo := Sender As TComboBox; Case (myCombo.Tag) of 0: Memo1.Color := TColor (myCombo.Items.Objects[myCombo.ItemIndex]); 1: ListBox1.Color := TColor (myCombo.Items.Objects[myCombo.ItemIndex]); end; end; |
Re: Combobox Einstellungen Speichern
Hallo,
Erst einmal wirklich ein GANZ FETTES THX an dich. Machst dir wirklich viel Arbeit mir zu helfen. < Danke :P Habe jetzt nur ein paar Probleme: - Ich möchte einen Button für Speichern und einen für Laden. Ich weiß aber nicht was alles aus dem FormCreate in den Laden Button rein muss. Wäre nett wenn du das auseinandere fetzen könntest. Denn ich glaube alles auf den Laden Button von FormCreate geht nicht. - Und mein zweites Problem ist, dass ich nicht viel mit "AlleComboBoxChange" anfangen kann. Ich tippe mal ich muss die einzelnen Comboboxen dazu definieren oder so. weiss aber nicht wie das geht. Vielleicht kannste mir das ja schreiben :) Wenn du das getan hast, dann gucke ich mal ob es dann funktioniert. Natürlich nur wenn du Zeit und Lust hast mir zu helfen.. Button zum Speichern = Button1 Button zum Laden = Button2 (Ich weiß keine Einfallsreichen Namen aber solange man den Überblick einiger Maßen hat ;) ) Gr33tz! Tigerhead |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 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