Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - PageControl mit identischen Seiten
mkmk - Mi 16.07.08 19:56
Titel: PageControl mit identischen Seiten
Guten Abend
Ich habe seit nun bald 10 Jahren mit Visual FoxPro gearbeitet. Und seit etwa 2 Wochen bin ich ebenfals ein Delphiner. Eine echt tolle Sprache.
Was ich nicht ganz verstanden habe:
In Vfp kann ich folgendes machen:
- In einer Form habe ich ein PageControl (PgFrame) mit sagen wir 3 Seiten (Pg1 .. Pg3).
- Auf jeder Seite habe ich ein Edit-Feld mit demselben Namen Edit.
- Angesprochen werden dise wie folgt:
Thisform.PgFrame.Pg1.Edit.Value
Thisform.PgFrame.Pg2.Edit.Value
Thisform.PgFrame.Pg3.Edit.Value
In Delphi muss man anscheinend fuer jede Control einen eigenen Namen geben. Was mache ich aber, wenn alle Seiten denselben Aufbau haben? In Vfp konnte ich eine Seite erstellen und die anderen mit copy/paste erstellen.
Wie macht man das in Delphi?
Dank im voraus
Tilman - Mi 16.07.08 21:17
Huhu :)
Dafür gibts in Delphi das TabControl. Einfach aufs Form ziehen, mit der Eigenschaft "tabs" die verschiedenen "Seiten" anlegen. Mit "tabcontrol.tabindex" kann man dann abfragen welche Seite gewählt ist, und je nach dem reagieren.
mkmk - Mi 16.07.08 21:52
Herzlichen Dank für die prompte Antwort.
Anfaenglich hatte ich auch mit TabControl mein Glück versucht, aber als es mir einfach nicht gelang, mehrere Seiten hervorzuzaubern, ging ich zu PageControl über.
Ich habe in der Zwischenzeit Deinen Hinweis in die Tat umgesetzt ... und siehe da, es hat geklappt. Nochtmals herzlichen Dank.
Mal ergooglen, was denn der Unterschied zwischen PageControl und TapControl ist.
mkmk - Mi 16.07.08 21:56
Aber der Name des Controls muss aber anscheinend eindeutig sein; ist das richtig?
Tilman - Mi 16.07.08 22:01
mkmk hat folgendes geschrieben: |
| Aber der Name des Controls muss aber anscheinend eindeutig sein; ist das richtig? |
Jepp. Sowas wie Array-Komponenten oder so (habe ich mal in einem Basic-Dialekt gesehn) gibts in Delphi (leider) nicht. Man kann sich aber Arrays zur Laufzeit erzeugen, die dann Referenzen auf mehrere Komponeten enthalten.
mkmk - Mi 16.07.08 22:15
Hier habe ich eine gute Erklaerung für den Unterschied zwischen TTabControl und TPageControl gefunden:
http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_21491670.html
Well, what's the difference between TTabControl and TPageControl? Here's a quote from Delphi help:
"Unlike a page control, TTabControl is not made up of several pages that contain different controls. Instead, TTabControl is a single object. When the current tab changes, the tab control must directly update its contents to reflect the change in an OnChange event handler."
So if you use TTabControl, you don't have to make a TMemo for *each* tab, it should be enough with 1 TMemo. In this case you'll have to update contents of memo when user changes tab.
If you use TPageControl, then each page can contain it's own TMemo component.
This is why TPageControl takes more resources than TTabControl does ;)
Here's an example with TPageControl..
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| ------ creating of new page var tab : TTabSheet; begin tab := TTabSheet.Create(nil); tab.Caption := format('tab &%d', [PageControl1.PageCount + 1]); tab.InsertControl(TMemo.Create(nil)); TMemo(tab.Controls[0]).Text := format('TMemo component in tab Nr. %d',[PageControl1.PageCount + 1]); tab.PageControl := PageControl1; end;
------ accessing TMemo in selected page begin TMemo(PageControl1.ActivePage.Controls[0]).PasteFromClipboard; end; |
Moderiert von
Christian S.: Delphi-Tags hinzugefügt
Tilman - Mi 16.07.08 22:19
Naja hab deinen Post jetzt net ganz gelesen (Tipp: Source-Zitate in "Delphi"-Tags setzen). Aber man kann ganz grob sagen: ein PageControl erlaubt ein Formular in "Seiten" aufzuteilen. Diese Seiten können ganz verschieden sein; z.B. könnte in der ersten Page ein Memo sein, im zweiten ein Image angezeigt werden und die dritte Page könnten 5 Checkboxen und einen Button verbergen.
nagel - Do 17.07.08 00:34
Tilman hat folgendes geschrieben: |
| Sowas wie Array-Komponenten oder so (habe ich mal in einem Basic-Dialekt gesehn) ... |
Gab's glaub ich in VB.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!