Tag alle miteinander...
Ich bin nicht so der Delphi könner (Hab vor 1. Jahr das erste mal Programmiert) das nur aso mal vorweg...
Über die Funktion:
Die Funktion macht aus einer
XML - "Verfügbaren Sprachen" eine Unterspalte in einem TPopUpMenu.
{Problem 1:
Icon - Dateien sollen zur Laufzeit aus .ico Dateien geladen werden und einer ImageList hinzugefügt werden.
Ich bekomme eine
Access violation schon bei Icon.Create; Ich weis überhauptnicht was daran den schlimm sein soll ... Ziel ist es eine Icon-Datei zuladen.} Gelöst
Problem2:
Ich erstelle die Popup-Menü Einträge per Laufzeit, Per klick auf den Menüeintrag soll natürlich auch etwas geändert werden, die Proceduren
Code:
function WriteDefaultLanguage(Language:integer):Boolean;
WriteDefaultLanguage(0)
WriteDefaultLanguage soll dabei der Parameter Language übergeben werden.
Zu beachten ist auch das das ganze in eine
Unit ausgelagert ist, ich zwar schon öfters Komponenten zur Laufzeit erzeugt habe aber ihnen noch nie einen "parameter" übergeben habe.
Für mich wäre auch schön zuwissen wie man es ohne "Main.MenuOptionBtnClick" funktioniert sondern mit einer Selbstangefertigten funktion wie z.b
Delphi-Quellcode:
procedure MenueLanguageclick;
begin
end;
Code:
procedure LangInitialize(AControl: TComponent);
LangInitialize(Main);
Delphi-Quellcode:
procedure AddLanguageList(Menu:TPopupMenu);
var Item:TMenuitem;
Caption,IconFile:
string;
Imageindex,i:integer;
shortcut:Tshortcut;
Help:THelpContext;
Icon:TIcon;
begin
Icon:= TIcon.create;
if Setxmltofile(Lngfile)
then begin
Menu.Items[0].Clear;
Menu.Images:=Main.LangPicList;
for i:=2
to xml.ChildNodes['
avlanguages'].ChildNodes.count-1
do begin
IconFile:=
xml.ChildNodes['
avlanguages'].ChildNodes[i].Attributes['
icon'];
if (Iconfile ='
')
then else begin
Iconfile:='
'+ExtractFilePath(Application.ExeName)+'
language\'+Iconfile+'
';
showmessage(IconFile);
try
Icon.LoadFromFile(IconFile);
except
error(1005,'
Fehler:Bilddatei konnte nicht geladen werden.');
end;
Main.LangPicList.AddIcon(Icon);
end;
Caption:=
xml.ChildNodes['
avlanguages'].ChildNodes[i].LocalName;
Item:=Newitem(Caption,Shortcut,false,true,Main.MenuOptionBtnClick,Help,Caption);
if Iconfile ='
'
then else
Item.ImageIndex:=Main.LangPicList.Count-1;
Menu.Items[0].Add(Item);
end;
end;
end;
Ich verlange keinen fertigen Code auch wen sich meine schreibweise manchmal so anhört