Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi [Non-VCL] TabControl - Wie geht's weiter? (https://www.delphipraxis.net/48936-%5Bnon-vcl%5D-tabcontrol-wie-gehts-weiter.html)

Daniel G 2. Jul 2005 22:16


[Non-VCL] TabControl - Wie geht's weiter?
 
Wunderschönen Guten Abend alle zusammen,

eigentlich wollte ich ja keinen Thread aufmachen, aber im Moment komme ich einfach nicht weiter.

Also, folgendes Problem:

Soweit bin ich bis jetzt gekommen:

Delphi-Quellcode:
var
  hwndTab: DWord;
  tie:    TTCITEM;

function WndProc(hWnd: HWND; uMsg: UINT; wP: wParam; lP: LParam):
  lresult; stdcall;
begin
case uMsg of
    WM_CREATE:
      begin
[...]
   hwndTab := CreateWindow(WC_TABCONTROL, '',
          WS_VISIBLE or WS_CHILD or TCS_BUTTONS or TCS_FLATBUTTONS or TCS_MULTILINE, 0, 0, 400,280, hWnd,0, hInstance,
          nil);

        tie.mask := TCIF_TEXT or TCIF_IMAGE;
        tie.iImage := -1;
        tie.pszText := 'Main';
        Sendmessage(hwndTab,TCM_InsertItem,0,Integer(@tie));

        tie.pszText := 'Additional Info';
        Sendmessage(hwndTab,TCM_InsertItem,1,Integer(@tie));

        tie.pszText := 'More Additional Info';
        Sendmessage(hwndTab,TCM_InsertItem,2,Integer(@tie));

        tie.pszText := 'About && Help';
        Sendmessage(hwndTab,TCM_InsertItem,3,Integer(@tie));
 end;
[...]
end;
Was ich vorhabe:

Ich möchte in NonVcl TabControls verwenden, die sich so verhalten wie TPageControl und TTabsheet.

Tja, jetzt habe ich da meine wunderschönen Tabs auf meinem Formular. Aber wie bekomme ich denn jetzt meine Controls dazu, auf die Tabs zu reagieren. Ich habe mir ein paar Beispiele in C angesehen, aber irgendwie blicke ich da nicht wirklich durch. Und weder Google noch die DP noch das DF konnten mir helfen. (Zumindestens nicht mit "TTCITEM").

Wie kann ich also soetwas wie die einzelnen Seiten bei TPageControl hinbekommen und wie plazieren ich dann meine Controls darauf?

(Wie ich generell Controls erstelle, weiß ich schon, so is' das ja nicht...)

mfg
Daniel


hilfe....
Selbst in einem französischem Forum hab' ich schon gesucht. Und das soll was heißen...

ste_ett 2. Jul 2005 23:51

Re: [Non-VCL] TabControl - Wie geht's weiter?
 
Du willst deine Controls auf die Seiten verteilen?

Delphi-Quellcode:
TPageControl erstellen
Control (z.B. Button) erstellen

Button1.parent := TabSheet2;

MrKnogge 3. Jul 2005 00:39

Re: [Non-VCL] TabControl - Wie geht's weiter?
 
Zitat:

Zitat von Daniel G
Aber wie bekomme ich denn jetzt meine Controls dazu, auf die Tabs zu reagieren

Was genau meinst du mit 'reagieren', meinst du das sie verschwinden, wenn du die Seiten wechselest ?
(das müsste doch von aleine gehen, wenn die Controls auf den Tabs liegen :gruebel: )

MathiasSimmack 3. Jul 2005 07:22

Re: [Non-VCL] TabControl - Wie geht's weiter?
 
Eigentlich ja, MrKnogge.
Mit anderen Worten: Daniel G, wir brauchen mehr Infos. :stupid:

Und mir fällt gerade auf, dass es in den Win32-API-Tutorials kein Kapitel darüber gibt. Luckie? :gruebel:

Olli 3. Jul 2005 10:07

Re: [Non-VCL] TabControl - Wie geht's weiter?
 
Die erste fundamentale Erkenntnis vorneweg: Tab controls enthalten keine Childs!!! Nie! <- immer im Hinterköpfchen behalten.

Zitat:

Zitat von Daniel G
Wunderschönen Guten Abend alle zusammen,

eigentlich wollte ich ja keinen Thread aufmachen, aber im Moment komme ich einfach nicht weiter.

Also, folgendes Problem:

Soweit bin ich bis jetzt gekommen:

Der Quelltext hilft erstmal primär nicht weiter, außer bei einer Erkenntnis: du erstellst garkeine Controls ;) ... aber weiter im Text. Die Begründung kommt nämlich noch.

Zitat:

Zitat von Daniel G
Was ich vorhabe:

Ich möchte in NonVcl TabControls verwenden, die sich so verhalten wie TPageControl und TTabsheet.

Ganz so komfortabel wird das leider nicht gehen ;)

Zitat:

Zitat von Daniel G
Tja, jetzt habe ich da meine wunderschönen Tabs auf meinem Formular. Aber wie bekomme ich denn jetzt meine Controls dazu, auf die Tabs zu reagieren. Ich habe mir ein paar Beispiele in C angesehen, aber irgendwie blicke ich da nicht wirklich durch. Und weder Google noch die DP noch das DF konnten mir helfen. (Zumindestens nicht mit "TTCITEM").

Es gibt sogar Delphi-Source dazu (nämlich von mir). Habe es ehrlich gesagt auch nirgends gefunden. Aber frecherweise ist der Source einmal relativ versteckt und einmal nur in meinem EDA zu finden. Was du willst, machst du in WM_NOTIFY:
Delphi-Quellcode:
    WM_NOTIFY:
      begin
        hdr := PNMHDR(lParam);
        case hdr^.code of
          TCN_SELCHANGE: begin
              OnSelChange(hdr^.hwndFrom);
            end;
        end;
      end;
Jetzt fragst du dich sicher, wie du an OnSelChange() kommst?! Guckst du hier:
http://assarbad.net.local/stuff/!export/ancient/useless_oldstuff.rar

Enthalten ist u.a. eine PropSht.zip - die ist was du suchst.

Zitat:

Zitat von Daniel G
Wie kann ich also soetwas wie die einzelnen Seiten bei TPageControl hinbekommen und wie plazieren ich dann meine Controls darauf?

(Wie ich generell Controls erstelle, weiß ich schon, so is' das ja nicht...)

Hehe, garnicht so trivial. Die Doku (PSDK) zu lesen, hätte dich allerdings weitergebracht (wenn auch nicht bis zum Ende, denn dazu habe ich damals auch lange experimentiert). Das Experimentieren kann ich dir wohl ersparen.

Bei weiteren Fragen einfach bescheidsagen!!

Zitat:

Zitat von ste_ett
Du willst deine Controls auf die Seiten verteilen?

Delphi-Quellcode:
TPageControl erstellen
Control (z.B. Button) erstellen

Button1.parent := TabSheet2;

Aua! Lesen -> Verstehen. Was könnte Non-VCL (siehe Titel) wohl bedeuten?

Zitat:

Zitat von MrKnogge
Was genau meinst du mit 'reagieren', meinst du das sie verschwinden, wenn du die Seiten wechselest ?
(das müsste doch von aleine gehen, wenn die Controls auf den Tabs liegen :gruebel: )

Tabs haben weder Controls noch haben sie sonstwas anderes!!! Tabs haben Reiter und einen Clientbereich. Das war's. Tab controls sind keine Page controls!!! Letztere "besitzen" die angezeigten Elemente.

Zitat:

Zitat von MathiasSimmack
Und mir fällt gerade auf, dass es in den Win32-API-Tutorials kein Kapitel darüber gibt. Luckie? :gruebel:

Rate mal wieso ;) ... ist nicht sooo trivial. Habe letztens wieder eine ganze Weile dran gesessen um das in MFC zum Laufen zu kriegen (da ist es etwas anders).

Ach ja ... natürlich kann man auch einzelne Controls statt Child-Dialogen in den Tabs anzeigen ... nur irgendwie ist das leichter Overkill.


@Fragesteller: Hätte da noch eine Variante wie man es noch ein wenig eleganter lösen kann. Allerdings muß ich es für Delphi noch eintippen - wann kommt bloß endlich mein direktes Delphi-Hirn-Interface. Hatte ich doch schon vor 5 Jahren bestellt :wall:

MathiasSimmack 3. Jul 2005 10:58

Re: [Non-VCL] TabControl - Wie geht's weiter?
 
Zitat:

Zitat von Olli
Child-Dialoge

So hatte ich es im Gedächtnis. Luckie hat das in einem seiner Programme benutzt. Und eigentlich geht es ja erst mal nur um die Grundlagen. Wir haben so viele Themen in den Tutorials, und dennoch wird nicht alles (im Sinne von: wirklich restlos alles!) erläutert. Bei meinen Themen spielt auch das persönliche Interesse eine Rolle. Einige Sachen habe ich nur kurz angerissen, andere habe ich genauer erläutert.

Hm, was mir aber einfällt, ich habe für die Systemsteuerungs-Demo Tabs verwendet. Aber war das nur ein TabControl (wie Daniel will), oder gehörte das zu den PropertySheets (s. Assistenten-Tutorial)? :gruebel: Ich glaube letzteres. Muss ich noch mal nachschauen.

Olli 3. Jul 2005 11:36

Re: [Non-VCL] TabControl - Wie geht's weiter?
 
Zitat:

Zitat von MathiasSimmack
Hm, was mir aber einfällt, ich habe für die Systemsteuerungs-Demo Tabs verwendet. Aber war das nur ein TabControl (wie Daniel will), oder gehörte das zu den PropertySheets (s. Assistenten-Tutorial)? :gruebel: Ich glaube letzteres. Muss ich noch mal nachschauen.

Ich denke eher letzteres ;)

Normalerweise erstellt man eben Child-Dialoge die dann noch bestimmte (Fenster-)Stile brauchen. Man kann zugunsten besserer Lokalisierung sogar den Dialogtitel benutzen um den Tabtitel zu setzen :mrgreen: ...

Daniel G 3. Jul 2005 13:08

Re: [Non-VCL] TabControl - Wie geht's weiter?
 
Hollà die Waldfee. Ich hatte zwar gehofft, das mir vllt. jemand helfen kann, aber mit so vielen Antworten habe ich dann doch nicht gerechnet.

Also, der Reihe nach:

(wer war es noch, der es nicht ausstehen konnte, wenn ein Beitrag mit zigtausend Zitaten gespickt war? :mrgreen: )

Zitat:

Zitat von Olli
Der Quelltext hilft erstmal primär nicht weiter, außer bei einer Erkenntnis: du erstellst garkeine Controls...

:oops: Stimmt, die kommen ja erst danach, das war ja mein Problem. Hab sie halt so erstellt, wie man sie "normalerweise" unter Verwendung der Win32Api erstellt.

Zitat:

Zitat von Olli
Was du willst, machst du in WM_NOTIFY:

Jepp, so weit war ich auch schon, allerdings warf sich dann bei mir die Frage auf, wie ich denn nun genau auf "OnSelChange" (Ja, auch das hatte ich schon im PSDK entdeckt) reagieren kann, wie also die Syntax in diesem Falle aussehen muss.

Zitat:

Zitat von Olli
http://assarbad.net.local/stuff/!export/ancient/useless_oldstuff.rar

Enthalten ist u.a. eine PropSht.zip - die ist was du suchst.

Juhuh, genausowas habe ich gesucht... im Zweifelsfalle wollte ich halt auch einen Resourcendialog verwenden. Übrigens stimmt der Link nicht ganz :zwinker:

Zitat:

Zitat von Olli
@Fragesteller: Hätte da noch eine Variante wie man es noch ein wenig eleganter lösen kann.

Das klingt interessant. Also, wenns dir nicht zuviel Arbeit macht würd' ichs gerne wissen.



Vielen Dank
Daniel

Olli 3. Jul 2005 13:23

Re: [Non-VCL] TabControl - Wie geht's weiter?
 
Zitat:

Zitat von Daniel G
(wer war es noch, der es nicht ausstehen konnte, wenn ein Beitrag mit zigtausend Zitaten gespickt war? :mrgreen: )

Der Simmatze war's :mrgreen:

Zitat:

Zitat von Daniel G
Übrigens stimmt der Link nicht ganz :zwinker:

Mist ... vergessen das .local zu entfernen. Ist halt schneller wenn man seine Webseite nochmal lokal hat - vonwegen 56k-Modem *schnief*

Zitat:

Zitat von Daniel G
Das klingt interessant. Also, wenns dir nicht zuviel Arbeit macht würd' ichs gerne wissen.

Gibt mir etwas Zeit. Vermutlich bis zum kommenden Wochenende (zirka).

Daniel G 3. Jul 2005 20:29

Re: [Non-VCL] TabControl - Wie geht's weiter?
 
Zitat:

Zitat von Daniel G
Das klingt interessant. Also, wenns dir nicht zuviel Arbeit macht würd' ichs gerne wissen.

Gibt mir etwas Zeit. Vermutlich bis zum kommenden Wochenende (zirka).[/quote]

Vielen Dank!

P.S.: 56k is' doch noch originell... :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 Uhr.
Seite 1 von 2  1 2      

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