Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TICON - Access violation / Per Laufzeit erstellten Objekten (https://www.delphipraxis.net/128609-ticon-access-violation-per-laufzeit-erstellten-objekten.html)

Noobix93 2. Feb 2009 18:21


TICON - Access violation / Per Laufzeit erstellten Objekten
 
Tag alle miteinander... :wink:

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 :wink:

khh 2. Feb 2009 18:29

Re: TICON - Access violation / Per Laufzeit erstellten Objek
 
Zitat:

Zitat von Noobix93

Icon.Create;

also ohne auf den geammten code einzugehen steckt hier :

Icon.Create;


der erste Fehler.

es sollte zumindest heissen
Icon:= TIcon.create;

Gruss KH

Noobix93 2. Feb 2009 18:36

Re: TICON - Access violation / Per Laufzeit erstellten Objek
 
You are my hero :P - funktioniert

//Edit Obrigen Code aktualisiert.

khh 2. Feb 2009 18:37

Re: TICON - Access violation / Per Laufzeit erstellten Objek
 
Zitat:

Zitat von Noobix93
You are my hero :P - funktioniert

//Edit Obrigen Code aktualisiert.

na das freut mich ;-)


Gruss KH


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz