Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Editfehld einer pageSeite zuordnen (https://www.delphipraxis.net/75510-editfehld-einer-pageseite-zuordnen.html)

mimi 20. Aug 2006 16:27


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) :(

Christian Seehase 20. Aug 2006 16:52

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.

mimi 20. Aug 2006 17:01

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;

mimi 20. Aug 2006 17:15

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 ?

Der_Unwissende 20. Aug 2006 17:58

Re: Editfehld einer pageSeite zuordnen
 
Zitat:

Zitat von mimi
Hallo,
wie kann ich einem Editfehld "sage" das es nur auf Sheet1 sein soll und nicht auf sheet2 ?

Hi,
wäre doch irgendwie hilfreich wenn du sagen würdest was genau sheet1 und sheet2 sind.

Zitat:

Zitat von mimi
der index von tabs[0].index ist immer 0 kann mir jemmand sagen warum?

Nun ja, du zeigst nirgends wie du tabs[0] überhaupt zuweist, also denke ich mal: Nein, keiner!

Gruß Der Unwissende

mimi 20. Aug 2006 21:29

Re: Editfehld einer pageSeite zuordnen
 
Sheet sind TabSheet von PageControl

und index wird hizugewiesen:
Delphi-Quellcode:
tabs[i].index:=CreateDialog(HInstance,Pchar(tabs[i].text),htab,@tabdlgfunc);
hatte ich auch gepostet....

DGL-luke 20. Aug 2006 22:42

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:
SetWindowPos(tabs[0].index, 0, 50, (rect.Bottom - rect.Top) + 50, 0, 0,
das kann ja nicht gehen...

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?

mimi 21. Aug 2006 09:54

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 !

DGL-luke 21. Aug 2006 10:38

Re: Editfehld einer pageSeite zuordnen
 
naja.... warum benutzt du denn CreateDialog? Das kann ich gar nicht nachvollziehen.
wie ist dein tabs-array denn deklariert?

mimi 21. Aug 2006 12:41

Re: Editfehld einer pageSeite zuordnen
 
weil im tutorial von luckie das auch so gemacht wird...
mein array ist zu defniert:

Delphi-Quellcode:
  Ttab = record
    text:String;
    index:Integer;
  end;

  hMainMenu,hSubMenu    : HMENU;
  tabs:array of Ttab;
  tcItem: TTCItem;
  hTab:THandle;
  hwndMemo1:hwnd;
gibt es sowas wie AddTabToPageControl ?

DGL-luke 23. Aug 2006 15:30

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?

Luckie 23. Aug 2006 15:35

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.

mimi 23. Aug 2006 19:21

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