Entwickler-Ecke

Sonstiges (Delphi) - Strategiesches Vorgehen


dany - Fr 25.07.03 13:32
Titel: Strategiesches Vorgehen
Hi,

ich möchte in einen Formular, 2 weitere plazieren. In den 2 weiteren Formularen befinden sich Edit, Combo usw. . Diese Formulare sehen aber absolut gleich aus. Ich möchte eines dieser Formulare fertig machen, dann zu einer Klasse erheben und jetzt aus dem Hauptformular zweimal initalisieren ( mit zwei unterschiedlichen Namen versteht sich ). Wie gehe ich da am besten vor. Sollte ich ertsmal eines so fertigmachen und dann zur Klasse erheben? Wie geht es am schnellsten und einfachsten?

dany


ShadowThief - Fr 25.07.03 13:53

wie erhebt man ein fertig gemachtes formular zu einer klasse?


JoelH - Fr 25.07.03 14:01
Titel: hmm,
warum machst du das Hauptfenster nicht einfach zu einem MDI Fenster, also Formstyle fsMDIFOrm

und die anderen Fenster zu MDI Childs. Ich denke das ist was du tun willst. Naja und von den Childs kannste soviele Instanzen erstellen wie Speicher in deiner Kiste ist.


dany - Fr 25.07.03 14:02
Titel: zu bedenken
es darf erst zur Laufzeit erzeugt werden. Das Hauptformular wird MDI. die beiden Child-MDI. Die Namen der Objekte werden erst jetzt festgelegt durch den Namen der bei der Initialisierung übergeben wird. Ist nicht ganz so einfach.


JoelH - Fr 25.07.03 14:05
Titel: hmm,
wo ist denn das Problem ?
Einfach in Projekt/Options die AutoCreateForms bearbeiten und dann die CHilds so aufrufen

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TmdiMain.Oeffne_MDIAUSWAHL;

var Header : String;

begin
  wincount:=wincount+1;
  Header:='Auswahl'+IntToStr(wincount);  //Hier die Caption zusammenbauen
  if CheckWindowFromMain(Header) then
  Begin
    m_mdiAuswahl:=TmdiAuswahl.create(Self);
    m_mdiAuswahl.Caption:=Header;
    m_mdiAuswahl.show;
  end;
End;


und

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
function TmdiMain.CheckWindowFromMain(sCaption:String):Boolean;

var bStatus : boolean;
    i       : integer;

Begin
  bStatus:=TRUE;
  Begin
    for i := screen.Formcount - 1 downto 0 do
    if trim(screen.Forms[i].Caption) = trim(sCaption) then
    begin
      // ... dann hole es nach vorne
      screen.Forms[i].BringToFront;
      screen.Forms[i].Repaint;
      bStatus:=FALSE;
    end;
  end;
  CheckWindowFromMain:=bStatus;
end;

holt das richtigige in den Vordergrund wenn es schon da ist.