A Delphi megjegyzi, hogy blokkolja az ablak újratervezését a gyermek ablakok frissítése közben
Rájöttem a WM_SETREDRAW üzenetre. Ez lehetővé teszi, hogy egy kis időt, hogy kikapcsolja dolgozza át a kontroll (doboz), és ezáltal enyhíti a felhasználó felesleges villogás effekt loop, és hasonlók. Alkalmazva az osztójában. most a méretváltozással - a szépség. Hasonlítsuk össze a két animációk (mivel ez gif - mentett szürkeárnyalatos vagy színes tárgyak jelennek meg).
A WM_SETREDRAW alkalmazása előtt:
Teljesen világos, hogy az osztó bal oldalán lévő panelnek nincs ideje rajzolni (és a jobb oldali elmarad).
És ez a keret definiálása után módosítja az AlignControl szélességét a WM_SETREDRAW-ban:
A kód beillesztése így néz ki:
Megjegyzem, hogy ha csak átfestés a szülő (viszonyítva a splitter), amelyet például hívás Parent.Repaint - a tollak is nem lesz, de van egy vibrálás, hogy sokkal jobban terhelt (mint a példában) kontroll esetben.
Ez a technika akkor használható, ha egy ablakban több vezérlőt kell áthelyezni. Nos, mint például, amikor az IDE az elrendezésre (asztali sebességbeállítás) változik - a rajz letiltása nélkül a felhasználó kellemetlen villogást lát.
És még egy fontos pont: WM_SETREDRAW láthatóságának módosításához az ablak (mintha el van rejtve, de a terület az ablak alatt - nem újrarajzolásának). És ha az ablak el van rejtve, akkor az hibásan jelenik meg (és fordítva), ezért ne felejtsd el, hogy ellenőrizze ezt a pontot.
Igen, köszönöm. Ez a trükk a TForm-hez általában - ez általában veszélyes (a felhasználó az űrlapra kattintva "az" alatt lesz, és az űrlap elveszíti a fókuszt). Ezért jobb, ha minden TPanel-vezérlőt behelyez, és máris "játszik" vele.
Azonban egy speciális esetben egy osztó, ez a művelet lehetetlen, mert ez a kód az egérrel már rögzített
Bár igazán megpróbál - tudsz :)
(Van lehetőség arra, hogy programozva állítsa be az IsSnapped tulajdonságot). Most arra gondolok, hogy mit tegyek.
Oké, hagyom, ahogy van. Mindenkinek tanácsos paneleket vagy kereteket használni.