[Code] Delphi // Projekt Notizzettel

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Radiergimmy, 13. Juli 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 13. Juli 2009
    Delphi // Projekt Notizzettel

    hey ich hab hier 2 recht simple probleme, komm aber ned drauf wie ich es weg bekomm.

    hier mal der source code:

    mNotiz
    Spoiler
    Code:
    unit mNotiz;
    
    interface
    
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls, mZettel, mDialog;
    
    type
     TNotiz = class(TForm)
     LbZettelliste: TLabel;
     BtNeuerZettel: TButton;
     BtVerbergen: TButton;
     BtAnzeigen: TButton;
     BtEnde: TButton;
     LBoxZettelliste: TListBox;
     procedure BtNeuerZettelClick(Sender: TObject);
     procedure BtVerbergenClick(Sender: TObject);
     procedure BtEndeClick(Sender: TObject);
     procedure BtAnzeigenClick(Sender: TObject);
     private
     Zettel: TZettel;
     public
     { Public-Deklarationen }
     end;
    
    var
     Notiz: TNotiz;
    
    implementation
    
    {$R *.dfm}
    
    procedure TNotiz.BtNeuerZettelClick(Sender: TObject);
    var Titel:String;
    begin
    Dialog := TDialog.Create(Notiz);
    Dialog.ShowModal;
    Titel:=Dialog.EdTitel.Text;
    if Titel <> '' then begin
    Zettel:=TZettel.Create (Notiz);
    Zettel.Caption:= Titel;
    Zettel.MemZettel.Text := '';
    Zettel.Show;
    end;
    Dialog.Destroy;
    LBoxZettelliste.Items.Add(Titel);
    end;
    
    procedure TNotiz.BtVerbergenClick(Sender: TObject);
    //var I:integer;
    //var X:integer;
    var zettelname:string;
    begin
    //I:=0;
    //X:=LBoxZettelliste.ItemIndex+7;
    //while I <= ComponentCount-1 do begin
    //if Components[X] is TZettel then
    //TZettel(Components[X]).Visible := False;
    //I:=I+1;
    //end
    //if Zettel <> Nil then
    //begin
    //Zettel.Destroy;
    //Zettel:= nil
    //end
    //if screen.ActiveForm is TZettel then
    //screen.activeform.Visible:=false;
    //begin
    //zettelname:= screen.ActiveForm.Name;
    //TZettel(zettelname).visible:= false;
    //TZettel(Components[screen.ActiveForm]).Visible:=False
    //end;
    
    end;
    
    procedure TNotiz.BtEndeClick(Sender: TObject);
    begin
    while Components[ComponentCount-1] is TZettel do
    TZettel(Components[ComponentCount-1]).Destroy;
    Close
    end;
    
    
    procedure TNotiz.BtAnzeigenClick(Sender: TObject);
    //var I:integer;
    var X:integer;
    begin
    //I:=0;
    X:=LBoxZettelliste.ItemIndex+7;
    //while I <= ComponentCount-1 do begin
    //if Components[X] is TZettel then
    TZettel(Components[X]).Visible := True;
    //I:=I+1;
    //end
    end;
    
    end.

    mZettel
    Spoiler
    Code:
    unit mZettel;
    
    interface
    
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;
    
    type
     TZettel = class(TForm)
     MemZettel: TMemo;
     procedure FormCreate(Sender: TObject);
     private
     { Private-Deklarationen }
     public
     { Public-Deklarationen }
     end;
    
    implementation
    
    {$R *.dfm}
    
    end.

    mDialog
    Spoiler
    Code:
    unit mDialog;
    
    interface
    
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;
    
    type
     TDialog = class(TForm)
     BtOK: TButton;
     BtAbbruch: TButton;
     EdTitel: TEdit;
     LbTitel: TLabel;
     procedure BtOKClick(Sender: TObject);
     procedure BtAbbruchClick(Sender: TObject);
     private
     { Private-Deklarationen }
     public
    // function GetTitel:String;
     end;
    
    var
     Dialog: TDialog;
    
    implementation
    
    {$R *.dfm}
    
    procedure TDialog.BtOKClick(Sender: TObject);
    begin
    close;
    end;
    
    procedure TDialog.BtAbbruchClick(Sender: TObject);
    begin
    EdTitel.Text:='';
    close;
    end;
    
    end.

    mein erstes problem ist wenn ich das ganze starten will kommt ein error in mZettel:
    ungenügende forward- oder external-deklaration das hat ich auch schon iwann gelöst, hab aber grad was rumprobiert und nun gehts nicht mehr.

    mein zweites problem liegt wie man sieht daran bestimte formen zu verstecken und bei bedarf wieder anzuzeigen und das ganze mit hilfe von ner listbox mit den namen von den "Zetteln" und der Buttons "Verbergen" und "Anzeigen"
     
  2. 13. Juli 2009
    AW: Delphi // Projekt Notizzettel

    also für dein 2. problem.

    bsp:

    TButton.Visible:=true; oder
    TButton.Visible:=false;

    also jenachdem obder button angezeigt werden soll oder nicht.
    denk aber dran das wenn du welche auf true stelltst das die anderen auf false stellst.
    das könnte man vllt mit dem speedbutton versuchen .
     
  3. 13. Juli 2009
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Delphi // Projekt Notizzettel

    es geht nich um die buttons, ich erzeuge neue forms und lass dann noch ihre namen in ne listbox eintragen. und dann möchte ich die erzeugten forms verstecken oder anzeigen.

    Bild
     
  4. 13. Juli 2009
    AW: Delphi // Projekt Notizzettel

    Du hast einen Denkfehler, wenn du mittels "LBoxZettelliste.Items.Add(Titel);" die Items im
    Objekt LBoxZettelliste ablegst werden sie jedoch nicht als Objekt sondern als String zu
    diesem hinzugefügt, sodass du eigentlich keine Referenz mehr zur eigentlich Form mehr hast
    und somit der Wert des Befehls "ComponentCount" sich nicht ändert und du über
    "Components[X]" nicht darauf zugreifen kannst.

    Wege was die Fehlermeldung kommt, sehe ich jetzt auf anhieb nicht, wann tritt diese genau auf, bei welchem Quellcode?
    Ich vermutte mal des der Fehler beim ausführen von BtAnzeigenClick auftritt...

    Nun zur Lösungsmöglichkeit, um auf die gewünschten Forms zugreifen zu können, brauchen
    wir nicht den Namen des Forms sondern den Objektpointer des Forms um es eindeutig zu identifizieren.
    Gut das Bolrand praaktisch fast immer alles für alles zur Verfügung stellt, sowie in diesem Fall:
    Du kannst nämlich bei deinem Objekt LBoxZettelliste (TListBox) zusätzlich jeden hinzugefügten String mit einem Objekt verknüpfen:
    PHP:
    function  AddObject (const  S string AObject TObject ):  Integer ;
    In deinem Fall dann eben das erstellte Formular:
    PHP:
    LBoxZettelliste . Items . AddObject ( Titel Zettel );
    Somit hast du nun alles was du brauchst in deinem Objekt LBoxZettelliste gespeichert.

    Nun kann man jedes Formular welches mit dem bestimmten String verknüpft ist aus der Listbox ansprechen:

    PHP:
    [..]

     for 
    X := LBoxZettelliste . Items . Count - 1 downto 0  do
     
    begin
       
    ( LBoxZettelliste . Items . Objects [ X ] as  TZettel ). Destroy ;
        
    LBoxZettelliste . Items . Delete ( X );
     
    end ;

    [..]
    Ich denke mal der Rest, wie man nun die Formulare versteckt und anzeigt, ist nun verständlich.

    Mfg Rushh0ur
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.