Ich hab ein kleines Tool geschrieben, der als Videospiele Launcher fungiert (Mods oder andere Erweiterungen laden, Sprache ändern, etc.). Mit einer ComboBox soll der User die Größe des Launchers ändern können. Das funktioniert soweit alles einwandfrei. Nun versuche ich, die Caption der ComboBox zurück zusetzen, sobald ein Menüpunkt ausgewählt wurde. Das Problem das ich habe ist nur, dass sobald ein Menüpunkt ausgewählt wurde, die ComboBox einfach leer wird (sprich keine Caption). Andere Menüpunkte auswählen ist weiterhin möglich. Nach jeder Auswahl eines neuen Menüpunktes wird eine Prozedur gestartet, die zusätzlich einen Eintrag in einer .INI checkt. Ich habe bereits versucht die ComboBox1.ItemIndex:=-1 zu setzen, ohne Erfolg. Hier ist mein Code:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
Buttons, FileUtil, IniFiles;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure confCheck();
private
public
end;
var
Init, Language, Version, Enhancements, Mods, Size, Custom: String;
BackgroundList: TStrings;
MusicList: TStrings;
LogoList: TStrings;
Form1: TForm1;
Faktor: extended;
Config: TIniFile;
implementation
{$R *.lfm}
{ TForm1 }
const
IniFile = 'conf.ini';
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
0: begin
Config := TIniFile.Create(IniFile);
try
Config.WriteString('Size', 'Size', 'XL');
finally
Config.free;
end;
end;
1: begin
Config := TIniFile.Create(IniFile);
try
Config.WriteString('Size', 'Size', 'L');
finally
Config.free;
end;
end;
2: begin
Config := TIniFile.Create(IniFile);
try
Config.WriteString('Size', 'Size', 'M');
finally
Config.free;
end;
end;
3: begin
Config := TIniFile.Create(IniFile);
try
Config.WriteString('Size', 'Size', 'S');
finally
Config.free;
end;
end;
end;
confCheck;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close();
end;
procedure TForm1.confCheck();
begin
Config := TIniFile.Create(IniFile);
try
Language :=Config.ReadString('Language', 'Language', '');
Size :=Config.ReadString('Size', 'Size', '');
//Setting of Tool-Size
if Size='XL' then
begin
Faktor:=1;
end
else if Size='L' then
Faktor:=1.6
else if Size='M' then
Faktor:=2.4
else if Size='S' then
Faktor:=3.6;
//Dynamic Tool-Size
Width:=round(Screen.Width/Faktor);
Height:=round(Screen.Height/Faktor);
//Positioning of Tool-Size
Form1.position := poScreenCenter;
Form1.BorderStyle := bsNone;
//Setting of Captions
if Language='German' then
begin
ComboBox1.Text:='Größe wählen';
ComboBox1.Items.Clear;
ComboBox1.Items.Add('Vollbildschirm');
ComboBox1.Items.Add('Größe L');
ComboBox1.Items.Add('Größe M');
ComboBox1.Items.Add('Größe S');
end
else if Language='English' then
begin
ComboBox1.Text:='Choose Size';
ComboBox1.Items.Clear;
ComboBox1.Items.Add('Fullscreen');
ComboBox1.Items.Add('Size L');
ComboBox1.Items.Add('Size M');
ComboBox1.Items.Add('Size S');
end;
ComboBox1.ItemIndex:=-1;
finally
Config.free;
end;
end;
end.
Edit: Wenn ich einen Button implementiere, der einfach nur die Prozedur ConfCheck ausführt, dann wird die Caption komischerweise zurückgesetzt aber nicht über die ComboBox selbst.