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 NonVCL Control resizen (https://www.delphipraxis.net/100849-nonvcl-control-resizen.html)

Neutral General 4. Okt 2007 17:03


NonVCL Control resizen
 
Hi,

Ich weiß nicht ob ich mich grad blöd anstelle, aber dann stell ich mich schon seit gestern Abend blöd an...
Ich hab irgendwelche Controls STATIC,BUTTON,EDIT.. was auch immer und würde gerne die Höhe und Breite von denen ändern. Ich habs versucht mit

Delphi-Quellcode:
SetWindowPos(Handle,0,0,0,NewWidth,OldHeight,SWP_NOMOVE or SWP_NOZORDER);
Aber danach ist das teil weg. Einfach nicht mehr auffindbar. Ich habs auch mit MoveWindow probiert aber das bringt auch nichts. Wobei von der Beschreibung in der SDK SetWindowPos eher das sein dürfte was ich brauche.

Gruß
Neutral General

peschai 5. Okt 2007 07:27

Re: NonVCL Control resizen
 
Hallo
Ausschnitt aus "controls.pas", eventuell kannst das verwenden, bzw. das was du brauchst rauslesen ...
Delphi-Quellcode:
procedure TWinControl.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
var
  WindowPlacement: TWindowPlacement;
begin
  if (ALeft <> FLeft) or (ATop <> FTop) or
    (AWidth <> FWidth) or (AHeight <> FHeight) then
  begin
    if HandleAllocated and not IsIconic(FHandle) then
      SetWindowPos(FHandle, 0, ALeft, ATop, AWidth, AHeight,
        SWP_NOZORDER + SWP_NOACTIVATE)
    else
    begin
      FLeft := ALeft;
      FTop := ATop;
      FWidth := AWidth;
      FHeight := AHeight;
      if HandleAllocated then
      begin
        WindowPlacement.Length := SizeOf(WindowPlacement);
        GetWindowPlacement(FHandle, @WindowPlacement);
        WindowPlacement.rcNormalPosition := BoundsRect;
        SetWindowPlacement(FHandle, @WindowPlacement);
      end;
    end;
    UpdateAnchorRules;
    UpdateExplicitBounds;
    RequestAlign;
  end;
end;

Neutral General 5. Okt 2007 09:33

Re: NonVCL Control resizen
 
Hi,

Bin grad nicht zu Hause.. Werds mal nachher ausprobieren. Aber ich glaube ich hab das schon probiert und es hat nicht funktioniert.

Gibts vielleicht noch andere Vorschläge? Luckie wo bist du ? :mrgreen:

Gruß
Neutral General

Luckie 5. Okt 2007 09:37

Re: NonVCL Control resizen
 
Setz mal für den zweiten Parameter einen sinnvollen Wert ein, also entweder ein gültiges Fensterhandle oder eine der Konstanten.

SirThornberry 5. Okt 2007 10:00

Re: NonVCL Control resizen
 
was gibt dir GetLastError zurück?

DeddyH 5. Okt 2007 10:10

Re: NonVCL Control resizen
 
Zitat:

Zitat von Luckie
Setz mal für den zweiten Parameter einen sinnvollen Wert ein, also entweder ein gültiges Fensterhandle oder eine der Konstanten.

Unter Delphi 5 entspricht 0 HWND_TOP.

Neutral General 5. Okt 2007 11:09

Re: NonVCL Control resizen
 
Zitat:

Zitat von SirThornberry
was gibt dir GetLastError zurück?

Keinen Fehler. Ja ich hab den Fehler aber gefunden. Er sitzt vorm Bildschirm -.-

Bei sowas wie:

Delphi-Quellcode:
SetWindowPos(Handle,0,0,0,NewWidth,OldHeight,SWP_NOMOVE or SWP_NOZORDER);
Sollte man sichergehen das sowohl NewWidth als auch OldHeight >= 0 sind :wall:

DeddyH 5. Okt 2007 11:12

Re: NonVCL Control resizen
 
Zitat:

Zitat von NeutralGeneral
Sollte man sichergehen das sowohl NewWidth als auch OldHeight >= 0 sind

Jepp, das macht Sinn :mrgreen:

Neutral General 5. Okt 2007 11:20

Re: NonVCL Control resizen
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von NeutralGeneral
Sollte man sichergehen das sowohl NewWidth als auch OldHeight >= 0 sind

Jepp, das macht Sinn :mrgreen:

Wie ich mir das so durchlese: Ich hab Mist geschrieben: Die Wette sollten >= 1 sein damit man was sieht :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr.

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