Autor |
Beitrag |
Dhakiyah
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Mi 08.07.09 14:31
Hallo!
Möchte folgendes machen:
Oben in der Leiste soll zum Beispiel erscheinen:
Seiten
- Seite 1
- Seite 2
Wenn ich auf Seite 1 klicken soll unten dann Seite 1 geladen werden. Drücke ich Seite 2, dann Seite 2. Wie gehts? Muss ich zuerst Seite 1 und 2 programmieren und dann über das Menü laden oder wie geht das?
Wisst ihr was ich meine?
LG
Jasmin
_________________ Es ist soooo flauschig !!!
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mi 08.07.09 14:48
Was genau soll denn geladen werden? Verwendest du einen TWebBrowser, TImage, TMemo? Grundsätzlich musst du im Menü-Designer nur auf einen deiner Einträge doppelklicken und kannst dann deinen "Seitenaufruf" implementieren.
|
|
Dhakiyah 
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Mi 08.07.09 14:51
*hust*
Ich weiß nicht, was ich benutze.
Ich weiß nur das ich oben eine Auswahl haben soll und unten die entsprechenden Seiten geladen werden sollen. Ich soll ein Zeiterfassungsprogramm schreiben.
Dann soll oben zum Beispiel sein im Menü:
Urlaubsantrag
Gleitzeitantrag
etc.
Wenn ich dann oben etwas auswähle wird die Seite oder wie man das halt macht geladen... Verstanden?
_________________ Es ist soooo flauschig !!!
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mi 08.07.09 14:55
Schau dir mal TPageControl (Kategorie Win32) an. Wenn du da drauf einen Rechtsklick machst, kannst du weitere Seiten hinzufügen. Ist es das was du suchst?
|
|
Dhakiyah 
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Mi 08.07.09 15:01
Ich weiß es nicht.
Ich weiß auch nicht wie ich es erklären soll...
Ich denke ich muss mehrere Seiten programmieren und die im Hauptprogramm "laden", aber ich weiß nicht wie...
Ach mist... 
_________________ Es ist soooo flauschig !!!
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 08.07.09 15:07
Möglichkeiten: - Das genannte TPageControl ggf. mit ausgeblendeten Tabs und manueller Umschaltung via Menü
- Mehrere MDI-Formulare (die sogar automatisch in einem TMainMenu aufgelistet werden können oder auch parallel angezeigt werden, falls gewünscht)
- Mehrere eigenständige Formulare
- ...
|
|
Dhakiyah 
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Mi 08.07.09 15:11
Und wie lade ich dieses Formular oder was auch immer in die Hauptseite rein?
_________________ Es ist soooo flauschig !!!
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 08.07.09 15:21
Wenn du mehrere Oberflächen direkt in dem Hauptformular haben willst, dann bleiben nur noch die ersten beiden Möglichkeiten.
TPageControl hat direkt mehrere Seiten, die kannst du wie gesagt über das Kontextmenü hinzufügen.
Für MDI-Formulare stellst du FormStyle des Hauptformulars auf fsMDIForm und das weiterer Formulare auf fsMDIChild. Wenn du jetzt weitere Formulare erzeugst, dann landen diese im Hauptformular.
Theoretisch gäbe es noch die Möglichkeit separate Formulare einzufangen und ins Hauptformular zu legen, aber das ist denke ich der falsche Weg, da das so nicht gedacht ist.
|
|
Dhakiyah 
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Mi 08.07.09 15:30
Ich raffs nicht...
Ich hänge mal die Sachen an.
Also habe eine Unit1 und eine Unit2.
In Unit 1 ist das MainMenu indem man je nachdem Unit1 bzw. Unit2 auswählen kann.
ABER WIE???
Einloggen, um Attachments anzusehen!
_________________ Es ist soooo flauschig !!!
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 08.07.09 16:02
Na gut, hier mal ein Beispiel mit beiden Methoden. Eigentlich ist es ja wirklich nicht so schwer...
Einloggen, um Attachments anzusehen!
|
|
Dhakiyah 
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Mi 08.07.09 16:15
Das erste hatte ich gemeint.
Jo... Für jemanden der Programmieren kann isses mit Sicherheit nicht schwer...
Kann ich beim ersten auch einstellen, dass erst ein Fenster geschlossen sein muss, bevor das nächste geöffnet wird?
Gruß Jasmin
_________________ Es ist soooo flauschig !!!
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 08.07.09 16:17
also, ich würde es so machen:
pro Anwendungsfall (Urlaubsantrag, Gleitzeitantrag, etc.) ein eigenes Formular erstellen,
das alle Anforderungen des jeweiligen Anwendungsfalls abdeckt.
Jedes der Formulare bekommt eine procedure, mit der das Formular sich selber aufruft:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| type .... = class(TForm) ... ... private ... ... public ... ... end;
procedure ZeigeDeinFormularName; var DeinFormularName: TDeinFormularName;
implementation
procedure ZeigeDeinFormularName; begin Application.CreateForm(TDeinFormularName, DeinFormularName); try DeinFormularName.ShowModal; finally DeinFormularName.Release; end; end;
... weiterer Code ... |
Ein weiteres Formular ist dann das Hauptformular.
In diesem werden alle benötigten Units in der 2ten Uses-klausel eingebunden.
Dann machste dein Hauptmenu, wenn du dann auf einen angelegten Menupunkt klickst,
schreibst du an der stelle dein
Delphi-Quelltext 1:
| zeigeDeinFormularName; |
in deinen Projektoptionen verschiebst du dann unter 'Formulare' noch alle ausser dem Hauptmenue von 'automatisch erzeugen' nach 'Verfügbare Formulare'.
Damit sollte den Problem behoben sein, du hast für alle Anwendungsfälle ein eigenes Formular und das Hautpmenü ist 'nur' noch für die Aufrufe da 
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 08.07.09 16:25
|
|
Dhakiyah 
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Mi 08.07.09 16:27
Ohje... Das ist mir alles zu hoch... 
_________________ Es ist soooo flauschig !!!
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 08.07.09 16:28
Dann ist doch die einfachste Lösung das PageControl. Ich meine da musst du nichts weiter machen, es kann immer nur eins angezeigt werden und du hast auch nur das eine Formular mit mehreren Seiten. 
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Fr 10.07.09 17:50
Also ich würde das dann auch mit Tabs machen - so wie z.B. in dem Thread " Frage zu: Page Control"
Um die anderen Tabs zu editieren, müsstest Du dann ja nur den TabIndex während der Entwicklungszeit entsprechend setzen.
|
|
Dhakiyah 
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Do 16.07.09 15:21
Hallo!
Wollte das machen, was Zuma oben erklärt hat, aber irgendwie geht es nicht...
Welchen Namen nehme ich dann für
Delphi-Quelltext 1: 2:
| var DeinFormularName: TDeinFormularName; |
?????????????????????
Hänge mal die ganzen Dateien an. Vielleicht kann mir ja jemand noch schnell helfen.
LG
Jasmin
Einloggen, um Attachments anzusehen!
_________________ Es ist soooo flauschig !!!
|
|
Dhakiyah 
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Do 16.07.09 15:30
Ich habs heraus gefunden.
Nur jetzt öffnet sich das Fenster extra.
Es soll ja unten rein geladen werden in das Hauptformular, wie geht das jetzt?
LG
Jasmin
Edit:
Habe das Hauptformular jetzt auf fsMDIForm und das andere auf fsMDIChild gestellt.
Beim Aufruf kommt jetzt die Fehlermeldung:
Aus einem Sichtbaren Fenster kann kein modales gemacht werden...
Wenn ich jetzt das von Zuma wieder lösche und es so mache, wie jaenicke es vorgeschlagen hat, kann ich aber 1000x dieses Fenster öffnen.
Ich möchte genau eine Mischung aus beiden.
Es soll unten ins Hauptformular geladen werden ABER wenn ich ein neues/anderes Fenster aufrufe, soll sich das andere schließen. Es soll immer nur 1 Fenster im Hauptformular zu öffenen sein!!!!
_________________ Es ist soooo flauschig !!!
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Do 16.07.09 16:51
Dhakiyah hat folgendes geschrieben : |
Beim Aufruf kommt jetzt die Fehlermeldung:
Aus einem Sichtbaren Fenster kann kein modales gemacht werden...
|
showmodal markieren, F1 drücken
showmodal bedeutet, das du ein Fenster öffnest UND es als (einzig) aktives Fenster einstellst
mach mal aus dem
showmodal ein show;
Dein Schliessen-problem wird sich aber dadurch nicht lösen lassen.
Du müsstest beim Menüklick herausfinden, welches Fenster gerade auf ist
und das dann 'von außen' schließen
z.b (ungetestet, auf die schnelle vor Feierabend  )
im Hauptmenu ne Var
Delphi-Quelltext 1:
| FAufgerufen : integer; |
deklarieren
im Menüklick dann immer als erstes
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| case Faufgerufen of 1 : schließeDeinFormularName; 2 : schließeDein2tesFormularName; else end; FAufgerufen := 1; zeigeDasFormularXY; |
in jedem Fenster (wie ZeigeDeinFormularname)
die procedure einbauen :
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure schließeDeinFormularName; begin if Assigned(DeinFormularName) then DeinFormularName.Release; end; |
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Dhakiyah 
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Fr 17.07.09 09:01
@jaenicke:
Wie hast du das gemacht, das du mit nur einer Procedure auf alle Seiten zugreifst?
Und wie stellt man das ein, dass er die Tabs-Überschrift/Button nicht anzeigt sondern nur die reine Seite?
Delphi-Quelltext 1: 2: 3: 4:
| procedure TfrmPageControl.mniExamplePage1Click(Sender: TObject); begin pgcPages.ActivePageIndex := (Sender as TMenuItem).Tag; end; |
@zuma:
Könntest du ein komplettes Beispiel machen (wenns geht ohne irgendwelche namen zu ändern, einfach so lassen wies ist)... Ich blicke da irgendwie nicht so ganz durch...
Gruß Jasmin
_________________ Es ist soooo flauschig !!!
|
|