Nowe formy za pozostałe

0

Nie wiem jak dynamiczną formę cofnąć za wszystkie formy swojego programu i innych programów które są widoczne.

[b]SendToBack[/b] cofa każdą formę mojego projektu obojętnie czy na dynamicznej dam ten kod czy nie a ja chcę te tworzone podczas działania programu, czyli dynamiczne

Forma[ilosc].SendToBack; nie działa :(

Z góry dzięki,

0
uses Windows, Messages, Forms;
PostMessage(Forma[numer].Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
0

Nie o to mi chodziło, żeby belka jakaś powstała, tylko po utworzeniu formy poszła za inne i tam została na wieki.

0

Spróbuj tego:

var
  Hnd: HWND;

function EnumWindowsProc(H: HWND; P: Pointer): BOOL; stdcall;
var
  Buf: array[0..255] of Char;
  S: String;
begin
  Result := True;
  if (IsWindow(H)) and          //jeżeli uchwyt jest oknem
     (IsWindowVisible(H)) and   //i jest widzialne
     (not IsIconic(H)) and      //i nie jest zminimalizowane
     (H <> Hnd) then            //i nie jest uchwytem do ukrycia
     begin
       GetWindowText(H, Buf, 255);
       if Buf[0] <> #0 then
         begin
           S := String(Buf);
           if Length(S) > 6 then
             if Copy(S, 1, 7) = 'Forma #' then  //u mnie nazwy form to Forma #...
               SetForegroundWindow(H); //ustawiamy jako okno wierzchnie
         end;
     end;
end;

procedure SchowajForme(H: HWND); //H - uchwyt do okna do schowania
begin
  Hnd := H;
  EnumWindows(@EnumWindowsProc, 0);
end;

Zasada działania jest prosta: wyszukuje formy o tytułach rozpoczynających się na "Forma #" i różnych od uchwytu do schowania. Jeżeli chcesz schować w tyle kilka okienek, musisz zmodyfikować obie procedury tak, aby Hnd było tablicą.

0

A jak mam pobrać uchwyt okna do schowania?

0
Forma.Handle
0

Dzięki za odpowiedzi i pomoc ale nadal nie działa. Daje taki kod do Form2 (formy dynamicznie tworzone są na podstawie właśnie Form2 ;)

Zmieniłem sobie tą linijkę bo moja forma ma taką nazwę:
FormaGlo

if Copy(S, 1, 8) = 'FormaGlo' then  //u mnie nazwy form to Forma #...

Aby wywołać funkcje daje button na tą formę:

procedure TFormaGlo.Button1Click(Sender: TObject);
begin
  SchowajForme(FormaGlo.Handle);
end;

I zero reakcji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1