MilchTrinker Geschrieben 15. Juni 2002 Teilen Geschrieben 15. Juni 2002 Hallo!! Ich bin noch Blutiger [milchiger:D ] anfänger in Delphi, möchte aber gerne eine Unit per Button click bzw. automatisch öffnen lassen, weiss aber nur den Befehl nicht. WÄRE NET WENN ICH EINE ANTWORT BEKOMME!!! vielen dank!! ciao "der MilchTrinker" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 16. Juni 2002 Teilen Geschrieben 16. Juni 2002 wie meinst du das 'eine Unit öffnen' ? Willst du wenn du auf den Button klickst den Code der Unit anzeigen, oder wie meinst du öffnen ? Alle Units, die in der Uses Klausel stehen werden beim Compilieren dahin geschrieben, wo sie in der Uses anweisung stehen (nach Interface bzw. nach Implementation). Das du den Namen nach uses hinschreibst ist eigentlich nur ein Platzhalter, um dem compiler zu sagen wo der code nachher stehen soll. du könntest genausogut alles per Cut'n'paste da einfügen (also die ganzen Funktionen und Prozeduren) käme aufs selbe raus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MilchTrinker Geschrieben 16. Juni 2002 Autor Teilen Geschrieben 16. Juni 2002 also, es ist halt so: ich hab da einen button, und wenn ich auf den klicke dann soll sich ein kleines fenster öffnen (ähnlich der AboutBox) und da ist ein button bei dem wenn man klickt dass sich das fenster dann schliesst....wie mach ich das am besten? also was ist das fenster, eine Form oder Unit? bzw. welchen befehl brauche ich um es zu öffnen? ps: thx.... :) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 17. Juni 2002 Teilen Geschrieben 17. Juni 2002 Also ein Fenster ist ein Objekt der Klasse TForm, die Klasse (also die Definition eines Objekts) steht in einer Unit. Unit ist nur eine Textdatei, in der der Programmcode steht. Um ein Fenster zu öffnen gibt es mehrere Möglichkeiten. Vorallem ist es aber wichtig zu wissen ob das Fenster automatisch (beim Programmstart) erzeugt wird oder ob du es selber erzeugst. Automatisch mag sich zwar bequemer anhören, es hat aber viele Vorteile es selbst zu tun (und braucht auch nur 1 Zeile Code). Z.B. brauchen Fenster die autom. Erzeugt sind immer speicher, auch wenn du sie u.U. garnicht brauchst (wie oft kuckst du dir die AboutBox der Programme an die du nutzt?), ausserdem werden viele Fenster nur an bestimmten stellen gebraucht und der Prgrammstart geht schneller wenn sie erst dann erzeugt werden. Das sind so die Hauptgründe. Ich gehe jetzt davon aus, dass du die Fenster selbst erzeugst(wenn doch nicht musst du erst später weiterlesen). Die Unit in der das 2te Fenster steht muss in der Uses-Anweisung stehen. Dann erzeugst du das Fenster, mit dem Namen, der in der Unit vorgegeben ist (du könntest auch jeden anderen nehmen, wenn du vorher eine Variable dafür definierst, die vom Typ Fenster2 ist) Form2 := TForm2.Create(self) Self ist der Besitzer, also in diesem Fall das Objekt, das das andere Erzeugt, hier könnte auch NIL stehen um das Freigeben solltest du dich sowieso kümmern. Damit hast du das Fenster Form2 erzeugt. du kannst jetzt noch verschiedene dinge damit tun ... irgendwelche Variablen anpassen etc, wenn du das brauchst. du kannst das aber auch im Ereigniss OnCreate von TForm2 tun, wobei es da in seltenen Fällen dazu kommen kann, das manche Dinge noch nciht vollständig erzeugt sind (je nachdem was da drauf ist) und es u.U. zu Zugriffsverletzungen kommt. (Hier geht es los wenn du es autom. Erzeugen läßt) Jetzt musst du es nur noch anzeigen. Das geht entweder mit Form2.Show; oder mit form2.ShowModal; ShowModal zeigt das Fenster so, dass es erst geschlossen werden muss, bevor du im Hauptfenster was machen kannst (auch der code wartet an der stelle). Für ein AboutFenster wäre das das richtige denke ich. Wenn das Fenster geschlossen wird musst du es wieder freigeben (geht so direkt nur bei ShowModal). (Wenn es autom. Erzeugt ist und du es später nicht selber erzeugst reicht hier ein Form2.close) Form2.free; und um es ganz schön zu machen noch Form2 := Nil; (so kannst du mit if assigned(Form2) prüfen ob es schon erzeugt wurde, wenn form2 nicht Nil ist kann hier ein falsches Ergebnis kommen) Dein code sollte etwas so aussehen var Form1: TForm1; implementation {$R *.DFM} uses Unit2; procedure TForm1.Button1click(Sender: TObject); begin Form2:= TForm2.create(self); Form2.ShowModal; Form2.free; Form2 := Nil; end; end. Ich hoffe das war soweit klar, mehr dazu steht in der Hilfe ... Ach ja ... ob ein Fenster autom. Erzeugt wird siehst du im Menü unter Projekt - Optionen und dort bei Formulare. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lpd Geschrieben 17. Juni 2002 Teilen Geschrieben 17. Juni 2002 Original geschrieben von MilchTrinker [..]ähnlich der AboutBox[..] @MarcH Gab es dafür nicht eine Standard-Dialog-Klasse ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 17. Juni 2002 Teilen Geschrieben 17. Juni 2002 Original geschrieben von lwp Gab es dafür nicht eine Standard-Dialog-Klasse ? Kann sein, keine Ahnung, hab bisher immer ne eigene AboutBox gemacht ... ausserdem wollte er wissen, wie man ein Fenster anzeigt ... :cool: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lpd Geschrieben 17. Juni 2002 Teilen Geschrieben 17. Juni 2002 Original geschrieben von MarcG ausserdem wollte er wissen, wie man ein Fenster anzeigt ... :cool: Mit F12. Na gut, ich würde eher einen Dialog verwenden, als ein Fenster, deswegen... aber wenn er lieber ein Formular nehmen will, soll mir das egal sein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 17. Juni 2002 Teilen Geschrieben 17. Juni 2002 Original geschrieben von lwp Mit F12. Na gut, ich würde eher einen Dialog verwenden, als ein Fenster, deswegen... aber wenn er lieber ein Formular nehmen will, soll mir das egal sein. Mit F12 schalte ich um zwischen Code und Formular :confused: :eek: Ich will halt etwas Einfluss darauf haben, wir die "Info" aussieht. ein Dialog ist ja auch nicht sehr viel mehr (oder weniger), ein CreateWindow(Ex?) in der API wird da mit Sicherheit auch aufgerufen ... und den BorderStyle bsDialog kannst du für ein Formular auch einstellen . Ahh...ich denk ich hab das mit F12 jetzt verstanden Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MilchTrinker Geschrieben 17. Juni 2002 Autor Teilen Geschrieben 17. Juni 2002 also erstmal danke für die antworten! also ich meinte eigentlich die Standart-Diaglog-Box, nämlich die AboutBox. Also hätte ich nur den Befehl gebraucht, eine AboutBox zu Createn bzw. einfach nur aufzurufen/öffnen. Wenn ich es allerdings mit TForm2 hinkriege bin ich auch glücklich :WD bin ich mir aber nicht sicher....ausserdem verstehe ich das nicht was Nil ist! Was bedeutet Nil? MFG MilchTrinker Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 17. Juni 2002 Teilen Geschrieben 17. Juni 2002 Original geschrieben von MarcG Mit F12 schalte ich um zwischen Code und Formular :confused: :eek: Ich will halt etwas Einfluss darauf haben, wir die "Info" aussieht. ein Dialog ist ja auch nicht sehr viel mehr (oder weniger), ein CreateWindow(Ex?) in der API wird da mit Sicherheit auch aufgerufen ... und den BorderStyle bsDialog kannst du für ein Formular auch einstellen . Und der Delphi "Dialog-Experte" erstellt dir auch ein TForm ... Ahh...ich denk ich hab das mit F12 jetzt verstanden Was sollte das ??? wollte eigentlich das Posting editieren ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 17. Juni 2002 Teilen Geschrieben 17. Juni 2002 Original geschrieben von MilchTrinker bin ich mir aber nicht sicher....ausserdem verstehe ich das nicht was Nil ist! Was bedeutet Nil? Nil bedeutet 0, nichts ... es wird für Zeiger eingesetzt, wenn sie einfach nirgendwo hinzeigen, leer sind. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MilchTrinker Geschrieben 17. Juni 2002 Autor Teilen Geschrieben 17. Juni 2002 aber warum ist TForm2 nichts?? ej, welches Delphi benutzt ihr eigelntich? und gibt es eine Zusammenfassung der gängigsten/bzw. allen befehlen von delphi mit erklärung und gegebenfalls beispielen? Die HIlfe von Delphi lässt einen da ganz im Stich........nur der shit editor *g* ps: ich hatte mein post grade gepostet und dann erst du darum konntest du kein edit machen..... :D :D Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 17. Juni 2002 Teilen Geschrieben 17. Juni 2002 Nicht TForm2 ist nichts, der Zeiger darauf ist nichts, er zeigt auf kein Objekt vom Typ TFrom2. Form2: TForm2 ist nichts anderes als ein Zeiger auf ein TForm2-Objekt. Benutze hier Delphi5, eine Zusammenfassung ist eigentlich die Hilfe, ausserdem sind da ja 2 Bücher mit dabei (Object Pascal Sprachreferenz und Delphi Entwicklerhandbuch) P.S. Welcher Editor ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MilchTrinker Geschrieben 17. Juni 2002 Autor Teilen Geschrieben 17. Juni 2002 Original geschrieben von MarcG P.S. Welcher Editor ??? Ich habe Delphi 6 ... Da ist als tutorial dabei wie man ein Editor macht...mehr net. lernen tut man aber net viel....*g* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarcG Geschrieben 17. Juni 2002 Teilen Geschrieben 17. Juni 2002 Dennoch sollte in der hilfe jeder Befehl erklärt sein und u.U. auch ein Beispiel dabei haben, fürs andere gibts ja Bücher ... die Leute wollen auch Geld verdienen :D:D Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MilchTrinker Geschrieben 17. Juni 2002 Autor Teilen Geschrieben 17. Juni 2002 ok ich guck mal....thanx!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.