AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form vermehrfachen !

Ein Thema von Counter909 · begonnen am 3. Jan 2007 · letzter Beitrag vom 3. Jan 2007
Antwort Antwort
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#1

Form vermehrfachen !

  Alt 3. Jan 2007, 15:24
moin


ich hab ein Problem: ich schreibe gerade ein relativ kleines Programm, wo ich jetzt aber
ein kleine Hilfe brauche und zwar sieht es so aus. Ich hab ein Unit/Form1 mit normaler Programm-Oberfläche. Dort drückt man auf einen Button, wobei EINE zweite Form sichtbar wird.

Delphi-Quellcode:
 
 if b<10 then showmessage('Die Zahl ist zu klein gewählt');
  if b>10 then
      begin
        Form2.Visible:=true;
        timer1.enabled:=true;
        for c:=1 to b do
Ich möchte aber , dass diese Form "b" mal geöffnet wird, bis jetzt wird sie ja nur einmal geöffnet, ist das i-wie möglich ? wenn ich jetzt zum beispiel hinter der Schleife showmessage('ssss') schreibe wird sie ja auch sooft geöffnet, aber mit der Form bekomme ich das nicht ganz hin
danke


mfg
counter
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#2

Re: Form vermehrfachen !

  Alt 3. Jan 2007, 15:32
Hallo!

Das geht mit einem Array. Du erzeugst eben mehrere Instanzen derselben Form-Klasse.

Delphi-Quellcode:
var Forms:array of TForm2;

...

begin
  ...
  Setlength(Forms,b)
  for c:=0 to b-1 do
  begin
    Forms[c]:=TForm2.Create(Self);
    Forms[c].Show;
  end;
Die Formular-Objekte werden in diesem Beispiel bei Beendigung freigegeben (Self sollte dein Hauptformular sein, daß diese dann freigibt). Ansonsten kannst du natürlich auch manuell freigeben, indem du den Array verfügbar hälst (also global definierst) und zu gegebener Zeit den Destruktor aufrufst (Forms[c].Free).

Cu,
Udontknow
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#3

Re: Form vermehrfachen !

  Alt 3. Jan 2007, 15:47
ah vielen dank das funktioniert schonmal
der tipp mit der array war eine gute idee....


jetzt aber zum schluss noch eine Frage:
jetzt werden die ja auch alle auf einen Haufen gesetzt, kann ich in der array jetzt
versuchen die positionen zu verändern ?


mfg
counter
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#4

Re: Form vermehrfachen !

  Alt 3. Jan 2007, 15:52
Natürlich.

Delphi-Quellcode:
Forms[c].Left:=100+c*30;
Forms[c].Top:=100+c*30;
Forms[c].Caption:='Formular '+IntToStr(c);
Cu,
Udontknow
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#5

Re: Form vermehrfachen !

  Alt 3. Jan 2007, 16:08
jopp...vielen dank, mein ziel
ist sogut wie erreicht.
jetzt muss ich noch die verschiedenen Positionen rausfinden und dann
gehts

mfg
counter
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#6

Re: Form vermehrfachen !

  Alt 3. Jan 2007, 17:51
Hallo

Jetzt muss ich doch nochmal so kleine fragen stellen ...
tut mir leid. Also:


1) ist es möglich, dass es nicht so ist, wenn man auf Form 1 auf das Kreuz oben rechts klickt, dass sich die anderen aus Form2 dann auch alle beenden ???

2)
Delphi-Quellcode:
for c:=0 to b-1 do
        begin
        forms[c]:=Tform2.Create(self);
        forms[c].show ;
        Forms[c].top:=100+c*50;
        Forms[c].Caption:='Formular '+IntToStr(c);
        end;
ich hab das jetzt angewendet,... dass die Form 2 sich alle von oben nach unten öffnen auf dem Desktop, wie man auch erkennen kann, nun möchte ich gerne, dass sich so eine Reihe nochmal von oben nach unten erstellt, aber natürlich an einer anderen stelle..sodass sich der desktop zu virtel damit füllt ?...... oder wie wird eigentlich die Position der Form1 berechnet ? wo ist der Null-Punkt ?

soll ein prog im Zusammenhang mit Ftp und so werden... das sind jetzt so zwei kleine sachen, die mich noch bisschen nerven.

vl
counter
  Mit Zitat antworten Zitat
RobertP

Registriert seit: 19. Aug 2006
181 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Form vermehrfachen !

  Alt 3. Jan 2007, 18:06
zu 1) Du musst im OnCloseQuery von Form1 die Variable CanClose auf false setzen, dann passiert garnix wenn man auf schließen klickt.

zu 2) 0 Punkt ist die obere linke Ecke des Monitors. Für ne 2te Reihe mach also einfach des selbe nochmal nur setzte für Left einen höheren Wert
Robert
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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