tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
5278
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Lenox
    Lenox Lenox ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    AP
    Beiträge
    413
    Wollte mal fragen wie ich es erreichen kann das ich in der Menüleiste die ich eben stehn habe unter Info => Hinweis

    Wenn ich nun auf Hinweis klicke möchte ich das ein Popup Fenster "Feste Grösse" aufspringt und dann in diesem Der Inhalt steht

    Beisp.: Version: 0.0

    Sowas in der Art

    Anhang:

    - die Fertige Exe damit ihr euch ein Kleines Bild machen könnt was ich meine

    Wäre nett wenn ihr mir da sagen könnt wie ich das realisieren kann

    DANKE
    Angehängte Dateien Angehängte Dateien
     

  2. #2
    Avatar von RudolfG
    RudolfG RudolfG ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    Gummersbach (NRW)
    Beiträge
    337
    Hey,

    ich weiß zwar nicht ganz genau was du mit "feste Größe" meinst aber es gibt für "Popup"-Fenster einige Möglichkeiten.

    Wenn dir eine Meldung reicht kannst du es mit:

    Code delphi:
    1
    
    ShowMessage('Version: 0.1.2.3.');
    Man kann ShowMessage() auch mehrzeilig erstellen etc. einfach mal in suchen

    Wenn du aber ein eigenes Formular haben möchtest, dann musst du ein neues Formular einfügen das per #include in dein Projekt einbinden (ich weiß nicht ob die Entwicklungsumgebungen von Delphi das nicht selber machen) dann in dem OnClick-Ereignis den Code für den Aufruf des Formulars reinschreiben.

    Leider habe noch kein bzw. nur sehr wenig erfahrung mit Delphi und habe hier (auf der Arbeit) keine Entwicklungsumgebung.

    Deswegen hoffe ich das dieses dir als anregung hilfreich ist.

    Gruß
    Rudolf Grauberger
    Geändert von RudolfG (06.02.08 um 09:28 Uhr)
     
    Technologien
    (Gute) Grundkenntnisse: HTML, CSS
    Fortgeschrittene-Kenntnisse: C++/Qt, C# (WinForms, Webservice), SQL

  3. #3
    Registriert seit
    Mar 2004
    Beiträge
    441
    Neben dem ShowMessage gibt es auch noch
    Code delphi:
    1
    2
    3
    4
    
    use
      Borland.Vcl.Dialogs;
     
    CreateMessageDialog(Msg, Typ, Buttons);
    wobei Msg einen String mit dem Text enthält, Typ die Art des Popupfensters (z.b. mtInformationen, mtError etc.) und Buttons ein Set mit den Buttons ist, die angezeigt werden sollen, wobei ich meist [mbOK] oder [mbCancel] verwende.
     

  4. #4
    Avatar von Lenox
    Lenox Lenox ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    AP
    Beiträge
    413
    Ich habe in dem Projekt noch ein Fenster erstellt diesen eine Feste Grösse verpasst

    Nun wollte ich wenn man auf Hinweis klickt genau dann das Fenster auf geht welches ich in das Projekt hinzugefügt habe

    Hier der Quellcode:

    Code delphi:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    program Metin2Markt_;
     
    uses
      Forms,
      Metin2Markt in 'Metin2Markt.pas' {m2m},
      info_hinweis in 'info_hinweis.pas' {InfoHinweis1};
     
    {$R *.res}
     
    begin
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
      Application.CreateForm(Tm2m, m2m);
      Application.CreateForm(TInfoHinweis1, InfoHinweis1);
      Application.Run;
    end.

    Und hier über Click sollte es dann geschehn:

    Code delphi:
    1
    2
    3
    4
    5
    
    //Hinweis zur Version und Autor des Programms im Popup
    procedure Tm2m.Hinweis1Click(Sender: TObject);
    begin
      
    end;

    Hier mal der Komplette Code:

    Code delphi:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    
    unit Metin2Markt;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, OleCtrls, SHDocVw, ComCtrls, ActnPopup;
     
    type
      Tm2m = class(TForm)
        WebBrowser1: TWebBrowser;    // Webbrowser
        MainMenu1: TMainMenu;        // Menü
          Datei1: TMenuItem;         // Allgemeines zur Metin2Markt
            Eintragen1: TMenuItem;   // Neues Item eintragen
            Beenden1: TMenuItem;     // Programm beenden
          Info1: TMenuItem;          // Version und Autor hinweis
            Hinweis1: TMenuItem;     // Hinweis
          AdminCP1: TMenuItem;       // Nur Für AdminRechten
            AllEintrge1: TMenuItem;  // Alle einträge anzeigen
            Items1: TMenuItem;       // Neue Items Anzeigen und gegenenfalls Freischalten
            ItemsDel1: TMenuItem;    // Löschen bestimmter Items
        procedure FormCreate(Sender: TObject);
        procedure Eintragen1Click(Sender: TObject);
        procedure Beenden1Click(Sender: TObject);
        procedure Hinweis1Click(Sender: TObject);
      private
        { Private-Deklarationen }
      public
        { Public-Deklarationen }
      end;
     
    var
      m2m: Tm2m; //Das Allgemeine Form-Fenster
     
    implementation
     
    {$R *.dfm}
     
    // Webseite im Frame anzeigen
    procedure Tm2m.FormCreate(Sender: TObject);
    begin
      Webbrowser1.Navigate('www.google.de');
    end;
     
    //Eintragen Button => Zum Eintragen eines neuen Items
    procedure Tm2m.Eintragen1Click(Sender: TObject);
    begin
      Webbrowser1.Navigate('www.google.de');
    end;
     
    //Hinweis zur Version und Autor des Programms im Popup
    procedure Tm2m.Hinweis1Click(Sender: TObject);
    begin
      
    end;
     
    //Beenden des Programms
    procedure Tm2m.Beenden1Click(Sender: TObject);
    begin
      m2m.Close;
    end;
     
    end.
     

  5. #5
    Avatar von RudolfG
    RudolfG RudolfG ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    Gummersbach (NRW)
    Beiträge
    337
    Hallo,

    irgendwie vermisse die Frage!

    Ich könnte mir jetzt vorstellen das du nicht weißt wie man das zweite Formular aufrufen kann, aber diese "vermutungen" etc. könnte ich mir (ich bin sicher die anderen sehen das auch so) ersparen.


    Zitat Zitat von Lenox Beitrag anzeigen

    Code delphi:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    program Metin2Markt_;
    uses
      Forms,
      Metin2Markt in 'Metin2Markt.pas' {m2m},
      info_hinweis in 'info_hinweis.pas' {InfoHinweis1};
    {$R *.res}
    begin
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
      Application.CreateForm(Tm2m, m2m);
      Application.CreateForm(TInfoHinweis1, InfoHinweis1);
      Application.Run;
    end.
    folgende Zeile würde ich einfach mal rauslöschen da die -meiner Meinung- nicht dahin gehört. Damit erzeugst du nämlich das Formular nachdem das erste Formular "geschlossen" wurde. (lasse mich aber gern korrigieren)

    Code delphi:
    1
    
    Application.CreateForm(TInfoHinweis1, IntoHinweis1);



    Zitat Zitat von Lenox Beitrag anzeigen
    Und hier über Click sollte es dann geschehn:

    Code delphi:
    1
    2
    3
    4
    
    //Hinweis zur Version und Autor des Programms im Popup
    procedure Tm2m.Hinweis1Click(Sender: TObject);
    begin
    end;
    Wie währ es wenn du hier das Objekt erzeugst? (wie das in Delphi geht weiß ich leider -noch- nicht!)

    Anzeigen kannst du das Formular mit z. b.

    Code delphi:
    1
    
    form2.ShowModal;

    Gruß
    Rudolf Grauberger
    Geändert von RudolfG (06.02.08 um 10:58 Uhr)
     
    Technologien
    (Gute) Grundkenntnisse: HTML, CSS
    Fortgeschrittene-Kenntnisse: C++/Qt, C# (WinForms, Webservice), SQL

  6. #6
    Avatar von Lenox
    Lenox Lenox ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    AP
    Beiträge
    413
    Werd das mal machen danke...

    Eventuell hat da ja noch jemand genaueres

    Ich bin nicht so der Brummer in Delphi muss mich da noch einarbeiten aber das meiste erstell ich selber gut manches fand ich bei Google aber das mit dem Extra Formular irgendwie nix gefunden

    Dennoch danke
     

  7. #7
    Avatar von RudolfG
    RudolfG RudolfG ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    Gummersbach (NRW)
    Beiträge
    337
    Hab einwenig bei Google gesucht und mein jetzt verstanden zu haben wie man ein neues Objekt(Formular) anlegt.

    Ist nicht ausprobiert!

    Code delphi:
    1
    2
    3
    4
    5
    6
    7
    8
    
    //Hinweis zur Version und Autor des Programms im Popup
    procedure Tm2m.Hinweis1Click(Sender: TObject);
    var
        Info: TInfoHinweis1;
    begin
       info := TInfoHinweis1.Create; //Objekt wird erzeugt
       info.ShowModal; //Formular wird angezeigt
    end;

    Ich hoffe das es so funktioniert bzw. so richtig ist.

    Gruß
    Rudolf Grauberger
     
    Technologien
    (Gute) Grundkenntnisse: HTML, CSS
    Fortgeschrittene-Kenntnisse: C++/Qt, C# (WinForms, Webservice), SQL

  8. #8
    Registriert seit
    Mar 2004
    Beiträge
    441
    Zitat Zitat von Grauberger Rudolf Beitrag anzeigen
    Ich hoffe das es so funktioniert bzw. so richtig ist.
    Macht es bzw. ist es.
    Allerdings würde ich dann nach Auswerten von TInfoHinweis noch ein
    Code delphi:
    1
    
      if TInfoHinweis <> nil then FreeAndNil(TInfoHinweis);
    nachschieben.
     

  9. #9
    Avatar von Lenox
    Lenox Lenox ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    AP
    Beiträge
    413
    Bei mir kommt jetzt wenn ich es compiliere diese Meldung:

    [DCC Fehler] Metin2Markt.pas(54): E2003 Undefinierter Bezeichner: 'TInfoHinweis1'
    [DCC Fehler] Metin2Markt.pas(56): E2066 Operator oder Semikolon fehlt
    [DCC Fehler] Metin2Markt.pas(57): E2066 Operator oder Semikolon fehlt
    [DCC Fehler] Metin2Markt_.dpr(6): F2063 Verwendete Unit 'Metin2Markt.pas' kann nicht compiliert werden
    Hier noch mal der Code

    Code delphi:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    
    unit Metin2Markt;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, OleCtrls, SHDocVw, ComCtrls, ActnPopup;
     
    type
      Tm2m = class(TForm)
        WebBrowser1: TWebBrowser;    // Webbrowser
        MainMenu1: TMainMenu;        // Menü
          Datei1: TMenuItem;         // Allgemeines zur Metin2Markt
            Eintragen1: TMenuItem;   // Neues Item eintragen
            Beenden1: TMenuItem;     // Programm beenden
          Info1: TMenuItem;          // Version und Autor hinweis
            Hinweis1: TMenuItem;     // Hinweis
          AdminCP1: TMenuItem;       // Nur Für AdminRechten
            AllEintrge1: TMenuItem;  // Alle einträge anzeigen
            Items1: TMenuItem;       // Neue Items Anzeigen und gegenenfalls Freischalten
            ItemsDel1: TMenuItem;    // Löschen bestimmter Items
        procedure FormCreate(Sender: TObject);
        procedure Eintragen1Click(Sender: TObject);
        procedure Beenden1Click(Sender: TObject);
        procedure Hinweis1Click(Sender: TObject);
      private
        { Private-Deklarationen }
      public
        { Public-Deklarationen }
      end;
     
    var
      m2m: Tm2m; //Das Allgemeine Form-Fenster
     
    implementation
     
    {$R *.dfm}
     
    // Webseite im Frame anzeigen
    procedure Tm2m.FormCreate(Sender: TObject);
    begin
      Webbrowser1.Navigate('www.google.de');
    end;
     
    //Eintragen Button => Zum Eintragen eines neuen Items
    procedure Tm2m.Eintragen1Click(Sender: TObject);
    begin
      Webbrowser1.Navigate('www.google.de');
    end;
     
    //Hinweis zur Version und Autor des Programms im Popup
    procedure Tm2m.Hinweis1Click(Sender: TObject);
     
    var
        Info: TInfoHinweis1;
    begin
      info:= TInfoHinweis1.Create; //Objekt wird erzeugt
      info.ShowModal; //Formular wird angezeigt
    end;
     
    //Beenden des Programms
    procedure Tm2m.Beenden1Click(Sender: TObject);
    begin
      m2m.Close;
    end;
     
    end.
     

  10. #10
    Registriert seit
    Mar 2004
    Beiträge
    441
    Füg mal unter deinem
    Code delphi:
    1
    2
    3
    4
    
    var
      m2m: Tm2m; //Das Allgemeine Form-Fenster
     
    implementation
    noch ein
    Code delphi:
    1
    2
    
    uses
      TFormHintDateiname;
    , wobei TFormHintDateiname der Name ist, unter dem du die Unit abgespeichert hast, ohne das abschliessende ".pas".
    Dadurch teilt du dann deinem Formular mit, dass es noch andere Formulare gibt, die innerhalb von ihm verwendet werden sollen. Ansonsten hat ja dein Tm2m wirklich keine Ahnung, was denn das TFormHint1 sein soll.
     

  11. #11
    Avatar von Lenox
    Lenox Lenox ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    AP
    Beiträge
    413
    Hmm... seltsam hab das nun gemacht

    Aber nun bekomm ich diese meldung

    [DCC Fehler] Metin2Markt.pas(60): E2035 Nicht genügend wirkliche Parameter
    [DCC Fehler] Metin2Markt_.dpr(6): F2063 Verwendete Unit 'Metin2Markt.pas' kann nicht compiliert werden
    Code delphi:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    
    unit Metin2Markt;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, OleCtrls, SHDocVw, ComCtrls, ActnPopup;
     
    type
      Tm2m = class(TForm)
        WebBrowser1: TWebBrowser;    // Webbrowser
        MainMenu1: TMainMenu;        // Menü
          Datei1: TMenuItem;         // Allgemeines zur Metin2Markt
            Eintragen1: TMenuItem;   // Neues Item eintragen
            Beenden1: TMenuItem;     // Programm beenden
          Info1: TMenuItem;          // Version und Autor hinweis
            Hinweis1: TMenuItem;     // Hinweis
          AdminCP1: TMenuItem;       // Nur Für AdminRechten
            AllEintrge1: TMenuItem;  // Alle einträge anzeigen
            Items1: TMenuItem;       // Neue Items Anzeigen und gegenenfalls Freischalten
            ItemsDel1: TMenuItem;    // Löschen bestimmter Items
        procedure FormCreate(Sender: TObject);
        procedure Eintragen1Click(Sender: TObject);
        procedure Beenden1Click(Sender: TObject);
        procedure Hinweis1Click(Sender: TObject);
      private
        { Private-Deklarationen }
      public
        { Public-Deklarationen }
      end;
     
    var
      m2m: Tm2m; //Das Allgemeine Form-Fenster
     
    implementation
     
    uses
      info_hinweis;
     
    {$R *.dfm}
     
    // Webseite im Frame anzeigen
    procedure Tm2m.FormCreate(Sender: TObject);
    begin
      Webbrowser1.Navigate('www.google.de');
    end;
     
    //Eintragen Button => Zum Eintragen eines neuen Items
    procedure Tm2m.Eintragen1Click(Sender: TObject);
    begin
      Webbrowser1.Navigate('www.google.de');
    end;
     
    //Hinweis zur Version und Autor des Programms im Popup
    procedure Tm2m.Hinweis1Click(Sender: TObject);
     
    var
        Info: TInfoHinweis1;
    begin
      Info.Create; // Objekt wird erzeugt
      Info.ShowModal; // Formular wird angezeigt
    end;
     
    //Beenden des Programms
    procedure Tm2m.Beenden1Click(Sender: TObject);
    begin
      m2m.Close;
    end;
     
    end.

    Irgendwie mach der das nicht so wirklich
     

  12. #12
    Registriert seit
    Mar 2004
    Beiträge
    441
    Zitat Zitat von Lenox Beitrag anzeigen
    Irgendwie mach der das nicht so wirklich
    "Der" sind der Compiler und der Linker und solange du deren Meldungen binär verwendest (Fehlermeldung = Alles falsch, laut um Hilfe rufen; keine Fehlermeldung = alles richtig) wirst du auf lange Sicht keine ordentlichen Programme schreiben können und ziemlich viel Mist mit dem Speicher anstellen.
    Der Compiler sagt dir nämlich ganz genau, was ihm nicht passt, man muss es nur auch einmal lesen:
    Zitat Zitat von Lenox Beitrag anzeigen
    [DCC Fehler] Metin2Markt.pas(60): E2035 Nicht genügend wirkliche Parameter
    Metin2.Markt.pas, Zeile 60. Was steht denn das drin?
    Code delphi:
    1
    
    Info.Create; // Objekt wird erzeugt
    Und was soll das jetzt heissen?
    Genau das, was der Compiler sagt. Dein Programm versucht die Methode Create() aufzurufen und da fehlen noch irgendwelche Parameter. In deinem ganzen TInfoHinweis wirst du aber keine Methode namens Create() finden. Jetzt heisst es aber in jedem Buch zu Delphi, dass Delphi objekorientiert läuft. Das bedeutet auch, dass dein TInfoHinweis von einer anderen Klasse abgeleitet sein kann und von dieser Elternklasse das Create() geerbt haben kann.
    Um was wetten wir, dass sich in deinem info_hinweis.pas folgende Zeile findet?
    Code delphi:
    1
    2
    
    type
      TInfoHinweis = class(TForm)
    Die bedeutet wieder nichts anderes, als dass dein TInfoHinweis von TForm abgeleitet ist. Du hast aber nie eine Klasse TForm angelegt. Da liegt der begründete Verdacht nahe, dass es sich bei TForm um eine Delphiklasse handelt.
    Und das ist ein so typischer Fall, dass ich gar nicht anders kann, als zu sagen: RTFM!
    Denn genau dafür sind offline Dokumentationen und Hilfssysteme da!
    In der Borlandhilfe finden sich mit dem Stichwort "TForm" sofort mehrere Einträge die auch alle mehr oder weniger direkt auf die Seite mit der Beschreibung der TForm-Klasse führen. Und bei der befindet sich unter den Methodenbeschreibungen auch das hier:
    TCustomForm.Create Konstruktor

    Erzeugt und initialisiert ein neues TForm-Objekt.

    Klasse
    TCustomForm

    Syntax


    [Delphi] constructor Create(AOwner: TComponent);


    Beschreibung
    Mit Create können Sie ein neues Objekt der Klasse TForm oder einer abgeleiteten Klasse von TForm zur Laufzeit instantiieren. Der Parameter AOwner gibt den Eigentümer des TCustomForm-Objekts an.
    ...
    Alles zurückgespult...
    ...und schon sind wir wieder bei
    Code delphi:
    1
    
    Info.Create; // Objekt wird erzeugt
    Die Hilfe sagt
    Der Parameter AOwner gibt den Eigentümer des TCustomForm-Objekts an.
    Du hast keinen Parameter. Der gleichen Meinung ist auch der Compiler:
    E2035 Nicht genügend wirkliche Parameter
    Und hier jetzt die Lösung:
    Gib deinem Create einfach irgendein Objekt mit. Derzeit dürfte es für dich noch keine Rolle spielen, ob du wirklich den Owner oder sonst was übergibst. Am einfachsten dürfte es sein mit
    Code delphi:
    1
    
    Info.Create(self); // Objekt wird erzeugt

    Und noch ein Tip am Rande:
    Ich halte es für extrem unwahrscheinlich, dass du wirklich die Programmierung in Delphi lernen kannst ohne dass du
    - wenigstens mal irgendein Handbuch zu Pascal und/oder Delphi gelesen hast
    - auch wirklich Fehlermeldungen liest und versuchst, sie zu verstehen (auch bei Fehlermeldungen funktioniert F1)
    - die Onlinehilfe von Delphi benutzt.
     

  13. #13
    Avatar von Lenox
    Lenox Lenox ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    AP
    Beiträge
    413
    Hmm... jetzt compiliert er es zwar alles richtig...

    Nur kommt dann beim Klick auf Info bzw. Hinweis...

    Zugriffsverletzung

    Gibt es eigentlich auch eine Etwas vereinfachte Variante wie man sowas machen kann wie man es ja bei vielen Programmen sieht wenn man auf Info [?] klickt und dann auf "Über Mozilla Firefox geht" ?

    Oder gibt es da nur diese Variante

    PS: Und ja ich bin da drin Anfänger... und ja ich habe mich auch schlau gemacht bevor ich gepostet hab was den der Fehlende Parameter sein könnte...

    Habe aber dazu nix finden können Sorry
     

  14. #14
    Registriert seit
    Mar 2004
    Beiträge
    441
    Ok, dann nochmal etwas deutlicher.
    Die Stichworte für dich (zum Suchen) sind "dynamische Formularerstellung". Insofern ok, ohne die richtigen Stichworte kann das Suchen in der Hilfe etwas hart sein.

    Die Zugriffverletzung kommt jetzt daher (davon ausgehend, dass du einfach nur meine Zeile 1:1 so abgetippt hast):
    Dein TInfoHinweis (abgeleitet von TForm) ist eine Klasse, eine Art Template, eine Schablone. In deiner Clickfunktion ist Info ein Zeiger (ich stamme aus der C++-Ecke und kenne nur diese Begriffe wirklich auswendig, evtl. heissen die in Delphi anders) auf "irgendein Ding" vom Typ TInfoHinweis.
    Zum Zeitpunkt der Funktion ist aber Info eben immer noch nur der Zeiger auf "irgendein Ding" vom Typ TInfoHinweis und mit so etwas wie "irgendein Ding" mögen Compiler, Debugger und Betriebssystem aber überhaupt nichts anfangen und sind auch zu 0% tolerant sondern meckern dich sofort an vom Feinsten.
    Du musst also aus "irgendein Ding" ein "genau DAS DA-Ding" machen.

    Dafür ist der Create-Befehl.

    Nur hast du mit hoher Wahrscheinlichekeit eben 1:1 abgeschrieben und hast in deinem Code stehen:
    Code delphi:
    1
    
    Info.Create(self)
    Info ist aber immer noch ein Zeiger auf "irgendein Ding", welcher der Compiler nicht kennt oder versteht. Was der Compiler aber versteht ist: Info ist von TInfoHinweis, er schaut nach und findet in der Definition von TInfoHinweis... kein Create. Aber die Klassendefinition von TInfoHinweis zeigt auf TForm und in TForm... jup, da gibt es den Create.
    Also ist der Create theoretisch möglich. Praktisch aber ist und bleibt Info "irgendein Ding".
    Um aus TInfo ein "genau DAS DA-Ding" zu machen brauchst du diesen Befehl:
    Code delphi:
    1
    
    Info := TInfoHinweis.Create(self);
    Übersetzt heisst das, dass TInfo jetzt wieder auf etwas zeigt.
    Auf was?
    Also da wird erstmal TInfoHinweis genommen. Und das gibt es! Das ist etwas ganz Konkretes, mit dem Compiler und Computer etwas anfangen können.
    Und der Befehl Create bewirkt im Prinzip nichts anderes, als dass von TInfoHinweis eine Art "Kopie" erstellt und im Speicher des Computer abgelegt wird.
    Und wo liegt diese Kopie?
    Genau darauf zeigt ab jetzt Info und wird so von einem "irgendein Ding" zu einem "genau DAS DA-Ding" vom Typ TInfoHinweis. Und schon sind alle zufrieden und es gibt keinen Zugriffsfehler mehr.

    Nein, ich will dich mit diesem Post nicht verarschen, das ist vielmehr tatsächlich die Art und Weise, wie ich mir früher selbst das Prinzip der Klasseninstanziierung gemerkt habe.

    Stichworte zum weiteren Suchen wären:
    - Klassen und Objekte
    - Instanzen bzw. Instaziierung
    - Objektorientierung und Vererbung

    P.S.: "irgendein Ding" wird dann später bekannt als "null pointer exception" bzw. nicht instaziiertes Objekt, das "genau DAS DA-Ding" ist dann später ein Zeiger auf eine Klasseninstanz.

    P.P.S.:
    Zitat Zitat von Lenox Beitrag anzeigen
    Gibt es eigentlich auch eine Etwas vereinfachte Variante wie man sowas machen kann wie man es ja bei vielen Programmen sieht wenn man auf Info [?] klickt und dann auf "Über Mozilla Firefox geht" ?
    Für dich ist das vielleicht nur ein kleiner Klick, für dein Programm kann das zu Schwerarbeit ausufern. Und sobald man sich mal mit dem Prinzip der objektorientierten Programmierung auseinander gesetzt und angefreundet hat, ist es gar nicht mal mehr so schwer oder aufwändig. Ein "wasch mich, aber mach mich dabei nicht naß" ist eben einfach nicht möglich.
    Geändert von CSANecromancer (08.02.08 um 08:09 Uhr)
     

  15. #15
    Avatar von Lenox
    Lenox Lenox ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    AP
    Beiträge
    413
    Achso...

    Gut das mit dem Stichwort suchen da bin ich schon verzweifelt da er mir zwar was raus geschmissen hat nach was ich gesucht habe aber nicht das Ergniss gefunden welches ich benötigte...

    Wenn ich die Suche mit den Richtigen Stichwort gesucht "hätte" dann wäre ich bestimmt schlauer wie ich es jetzt bei dir bin wofür ich euch so lobe das es euch gibt...

    Ich werd da nochmal genauer suchen und deines beherzigen sowie auch zum teil übernehmen

    PS: Ja hab es 1:1 übernommen xD zumindestens das Create(self)

    Ansonsten schreib ich meist alles selber... aber Delphi ist so Benutzer Freundlich das man da eigentlich kaum gross was machen muss ausser halt eben Zusatzfunktionen wie meine xD
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 04.08.10, 12:51
  2. Flash: nicht als popup erstellen
    Von hehe_me im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 06.05.09, 15:58
  3. Popup erstellen
    Von BIAsTeR im Forum Adobe Flex & AIR
    Antworten: 1
    Letzter Beitrag: 31.12.08, 13:11
  4. Variablenübergabe mit Popup und Bild erstellen
    Von Bencher im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 07.11.06, 14:20
  5. PopUp + noch ein PopUp überm PopUP :-)
    Von derSchneider im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 16.03.03, 13:38