Einzelnen Beitrag anzeigen

Noobix93

Registriert seit: 28. Mär 2008
Ort: Münster
21 Beiträge
 
#1

TICON - Access violation / Per Laufzeit erstellten Objekten

  Alt 2. Feb 2009, 18:21
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
STRG+ C ist zwar Freund des Programmierers aber am ende versteht man es selber nicht mehr
  Mit Zitat antworten Zitat