Autor Beitrag
mkmk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Mi 16.07.08 19:56 
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


Zuletzt bearbeitet von mkmk am Mi 16.07.08 20:25, insgesamt 1-mal bearbeitet
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: 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.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
mkmk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Mi 16.07.08 21:56 
Aber der Name des Controls muss aber anscheinend eindeutig sein; ist das richtig?
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Mi 16.07.08 22:01 
user profile iconmkmk 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.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
mkmk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Mi 16.07.08 22:15 
Hier habe ich eine gute Erklaerung für den Unterschied zwischen TTabControl und TPageControl gefunden: www.experts-exchange...lphi/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..

ausblenden 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
  // change [0], if memo is not first control in page
  TMemo(PageControl1.ActivePage.Controls[0]).PasteFromClipboard;
end;


Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: 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.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Do 17.07.08 00:34 
user profile iconTilman hat folgendes geschrieben:
Sowas wie Array-Komponenten oder so (habe ich mal in einem Basic-Dialekt gesehn) ...


Gab's glaub ich in VB.