Domanda

Ho un problema non sono in grado di risolvere, anche se trascorro molto tempo cercando di farlo.

Io di solito uso GridPanels per allineare i controlli sulle forme. Ha, tuttavia, un fastidioso bug. Quando la modalità GridPanel allineamento è alClient e massimizzare la sua finestra principale, il GridPanel adatta alla nuova dimensione di quella finestra, tuttavia, i controlli di posa in griglia non lo fanno. Rimangono nella stessa posizione in cui erano prima della finestra di ridimensionamento. Succede solo a massimizzazione della prima finestra. Se la finestra viene ridimensionata prima manualmente, everyting è OK. Credo che la griglia di regola relativi controlli figlio dopo l'evento secondo resize (??).

Cosa fare rendere il lavoro GridPanel correttamente se si tratta di questo bug? Potrebbe essere sufficiente per inviare un messaggio ad esso (ma quale messaggio?), Non lo so. Ho cercato di usare Riallinea, Refresh ecc, ma non ha aiutato.

Grazie per il vostro aiuto in anticipo,

Mariusz.

È stato utile?

Soluzione

Ah, ho avuto problemi simili pure. Potrebbe essere correlato a un problema di ridimensionamento nella VCL. Si potrebbe provare a la correzione da Andreas Hausladen . E sembra funzionare per me nella maggior parte dei casi.

Altri suggerimenti

Ho trovato un trucco.

in OnResize caso di genitore di gridpanel, modificare la larghezza di gridpanel di 1 pixel.

allora gridPanel noterà dimensioni cambiato, quindi riorganizzare sotto-controlli in gridpanel ..

campione è inferiore ..

procedure TForm1.FormResize(Sender: TObject);
begin
  GridPanel1.Width := GridPanel1.Width - 1;  // subtract 1
  GridPanel1.Width := GridPanel1.Width + 1;  // recover width by adding 1
end; 

Modifica della larghezza / invalidare il controllo non funziona per me (qualcosa è cambiato con le recenti versioni di RAD Studio?).

In ogni caso una simile, semplice soluzione lungo quella linea è:

procedure TForm1.FormResize(Sender: TObject);
begin
  GridPanel1.ControlCollection.BeginUpdate;
  GridPanel1.ControlCollection.EndUpdate;
end; 

Ho avuto questo errore anche su diversi progetti. Non sono sicuro di come ho risolto questo (era su progetti per il mio precedente datore di lavoro, non ho accesso a questo codice sorgente più). Penso di aver avuto TE ridisegnare / aggiornare quel frame padre o la forma in cui è stato collocato il GridPanel.

sul ridimensionamento del GridPanel.Invalidate di chiamare il proprietario. Non ho prove di esso. Spero che sia di lavoro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top