Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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"

Geschrieben

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.

Geschrieben

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....:) :) :)

Geschrieben

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.

Geschrieben
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 ... :D :cool:

Geschrieben
Original geschrieben von MarcG

ausserdem wollte er wissen, wie man ein Fenster anzeigt ... :D :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.

Geschrieben
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 ;)

Geschrieben

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

Geschrieben
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 ...

Geschrieben
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.

Geschrieben

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

Geschrieben

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 :D (Object Pascal Sprachreferenz und Delphi Entwicklerhandbuch)

P.S. Welcher Editor ???

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...