![]() |
Editfehld einer pageSeite zuordnen
Hallo,
wie kann ich einem Editfehld "sage" das es nur auf Sheet1 sein soll und nicht auf sheet2 ? (ich fange erst gerade an mit winapi zu arbeiten und bin am verzeifeln) :( |
Re: Editfehld einer pageSeite zuordnen
Moin Michael,
also wenn das so funktioniert wie mit VCL, müsstest Du den Parameter hWndParent für das Editfeld bei CreateWindow/CreateWindowEx mit dem Handle des Sheets füllen. |
Re: Editfehld einer pageSeite zuordnen
leider geht das nicht....
(keine wirkung), hier mein code:
Delphi-Quellcode:
procedure CreateSheeats(hwnd:HWND;Name:String);
var i:Integer; rect:TRect; begin SetLength(tabs,2); tabs[0].text:='test1'; tabs[1].text:='test2'; //hTab := GetDlgItem(hwnd, 0); hTab:=CreateWindowEx(DS_CONTROL , 'SysTabcontrol32', '' ,WS_CHILD or WS_VISIBLE ,0 ,0, WindowWidth, WindowHeight, hwnd, 0, 0, nil); for i:=0 to high(tabs) do begin tcItem.mask:=TCIF_TEXT; tcItem.pszText:=Pointer(tabs[i].text); tabs[i].index:=CreateDialog(HInstance,Pchar(tabs[i].text),htab,@tabdlgfunc); SendMessage(hTab, TCM_INSERTITEM, i, Integer(@tcItem)); end; SendMessage(htab, TCM_GETITEMRECT, 0, Longint(@rect)); // if tabs[1].index = 0 then MessageBox(hwnd,PChar('TEST'),PCHAR('TEST!'),0); SetWindowPos(tabs[0].index, 0, 50, (rect.Bottom - rect.Top) + 50, 0, 0, SWP_NOSIZE or SWP_NOZORDER or SWP_SHOWWINDOW ); hwndMemo1:=CreateWindowEx(WS_EX_STATICEDGE, 'Edit', '', WS_VISIBLE or WS_HSCROLL or WS_VSCROLL or WS_CHILD or ES_NOHIDESEL or ES_MULTILINE or ES_AUTOVSCROLL or ES_AUTOHSCROLL, 0, 30, WindowWidth-10, WindowHeight-80, htab, 0, 0, nil); // SetParent(hwndMemo1,htab); end; |
Re: Editfehld einer pageSeite zuordnen
der index von tabs[0].index ist immer 0 kann mir jemmand sagen warum?
ich wette dann geht das auch mit den zuordnen. oder muss ich wie im beispiel von Lucki per hand alle dialoge sichtbar bzw. unsichtbar machen ? |
Re: Editfehld einer pageSeite zuordnen
Zitat:
wäre doch irgendwie hilfreich wenn du sagen würdest was genau sheet1 und sheet2 sind. Zitat:
Gruß Der Unwissende |
Re: Editfehld einer pageSeite zuordnen
Sheet sind TabSheet von PageControl
und index wird hizugewiesen:
Delphi-Quellcode:
hatte ich auch gepostet....
tabs[i].index:=CreateDialog(HInstance,Pchar(tabs[i].text),htab,@tabdlgfunc);
|
Re: Editfehld einer pageSeite zuordnen
:gruebel:
tabs[0] -> das tab mit dem index 0 tabs[0].index ist ja dann...?! 0? Und wo ist jetzt das Problem :stupid: EDIT:
Delphi-Quellcode:
das kann ja nicht gehen...
SetWindowPos(tabs[0].index, 0, 50, (rect.Bottom - rect.Top) + 50, 0, 0,
SetWindowPos verlangt doch hoffentlich das Handle, oder? ja, tut es. also musst du da auch das handle übergeben. und für dein parent-problem: du setzt bei CreateWindowEx ganz unten das Tabcontrol und nicht das Tabsheet als parent, kann das sein? |
Re: Editfehld einer pageSeite zuordnen
ja ich glaube du hast recht.... aber wie kann ich das ziel erreichen ?
und Tabs[1].index ist auch gleich 0 wenn hier eins stehen würde. könnte ich damit noch was anfangen... aber da steht auch nur 0 drin ! |
Re: Editfehld einer pageSeite zuordnen
naja.... warum benutzt du denn CreateDialog? Das kann ich gar nicht nachvollziehen.
wie ist dein tabs-array denn deklariert? |
Re: Editfehld einer pageSeite zuordnen
weil im tutorial von luckie das auch so gemacht wird...
mein array ist zu defniert:
Delphi-Quellcode:
gibt es sowas wie AddTabToPageControl ?
Ttab = record
text:String; index:Integer; end; hMainMenu,hSubMenu : HMENU; tabs:array of Ttab; tcItem: TTCItem; hTab:THandle; hwndMemo1:hwnd; |
Re: Editfehld einer pageSeite zuordnen
Hallo,
ich bin in der WinAPI leider nicht besonders bewandert und weiss deswegen nicht, wie sich da PageControls, Tabsheets usw. darstellen. Wo ist denn das Tutorial von Luckie? |
Re: Editfehld einer pageSeite zuordnen
Ein TabSheet ist nur ein Container für weitere Fenster. Das heißt man erzeugt für jeden Tabsheetseite ein weiteres Fenster. Wird nun eine Tabsheetseite ausgewählt, werden alle Fenster unsichtbar gemacht und nur das, welches zu der Tabheetseite gehört sichtbar gemacht. Aber das wird auch alles in dem Tutorial erklärt und demonstriert. Nur dass es in dem Tutorial eben die Fenster für die Seiten des Tabsheets Dialoge aus der Ressource sind, was im Endeffekt einfacher ist und den Quellcode übersichtlicher macht.
Ich kann dir nur immer wieder sagen guck dir die Tutorials an und arbeite sie der Reihe nach durch und versuch zu verstehen, was du da machst und kopier nicht ohne Sinn und Verstand irgendwelche Quellcodeschnippsel aus den Demos. |
Re: Editfehld einer pageSeite zuordnen
sowas habe ich mir schon gedacht... d.h. ich kann auch dieloage im programm erzeugen ?
ich wollte auch garnicht einfach sachen kopieren und testen sondern verstehen und das kann ich nur wenn ich testen kann und damit rumspielen kann.... und es macht einfach kein spaß sich mit einem thema zu befassen wo 1. nicht genügen infos zu finden sind zu einem problem. 2. immer nur dialoge verwendet wird weil es einfacher ist... was ist daran schwer einfach ein dialog zu erstellen darauf ein memo zu packen und fertig... mehr möchte ich ja garnicht auf ein TabSheet dastellen... aber du hast recht.. ich werde diese thema für mich erstmal abhacken.... es hat kein sinn mehr für mich damit zu befassen auch wenn ich jetzt zeit der welt hätte.... ! das soll nicht heißen deine tutorials sind schlecht oder so.. ich finde die sind gut... aber für mich leider nicht geeignet... denn ich verfolge ein ziel wenn ich mit irgenwas neues anfangen. Ich lese immer wieder von dir: ließ die tutorials durch... das tue ich aber leider verstehe ich noch immer nicht wie ich mein problem was ich z.z. habe lösen kann/könnte wo es infos geben könnte auser bei MS weil da finde ich mich erst recht nicht zurecht... mir ist es ein räztel wie ihr euch dazurecht findet ! immer wenn ich was eingeben finde ich 1000 sachen aber nicht das was ich suche ! egal was für eine sprache das auch immer sein mag ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz