Deny átrajzolja dbgrida

Deny átrajzolja DBGrida

Üdvözlünk! Kérem, mondja, hogyan lehet megakadályozni újrarajzoláskor DBGrida, amikor egy másik objektum (panel) mozog rajta.
Az mit jelent ez:






- tiltják átrajzolja
- timer terjed panel
- hogy dolgozza át.
Most a bár nagyon lassan mozog, amikor DBGride számos eleme, különösen a festett.

Nem!
DisableControls letiltja a frissítési adatokat a DataSet
És azt kell, hogy dolgozza át DBGrid.
Természetesen megpróbáltam DisableControls - nem segít, a felső panel a DBGrid mozog még mindig nagyon lassú.

Legvalószínűbb, egyáltalán nem. Minden dobozban kell rajzolni, ha ez megváltozott.

Nem tudom megérteni, hogy a panel?

eljövetele előtt a panel:
# XA0; Mentse el a képet egy bitmap,
# XA0, ő elrejti a rács,
# XA0; bitmap állítottak.
Ha mozog, akkor a panel csak felhívni a bitmap
Ha elrejti a panelt, hogy visszatérjen az összes vissza

I-hez:
a) mozgatja a panel nem pixelenként minden egyes alkalommal, és a képpontok számát arányos az eltelt idő az utolsó műszak. Nos rögzíti az összes kívánt elmozdulás ideje. Akkor megy az egyik (hozzávetőlegesen) időben.


> És ezen bitmap lesz lehetőség, hogy felhívja a hiányzó részek
> Grid?

Hiányzó miért? Ahogy értem, amíg a panel úszik, a rács nem változik.

Tehát azt javaslom, hogy emlékezzen a teljes látható része a rács előtt a panel.
És akkor, amikor a repülő panel nem lehet levonni rács, és bitmap.

> DisableControls letiltja a frissítési adatokat a DataSet
Hülyeség. Ez letiltja a Újrarajzolás.

Micsoda rendetlenség!
- disable panel
- zabitmapit Rács
- elrejtése Rács
- felhívni Bitmap
- tartalmaznia panel
- hagy
- elpusztítani vitmap
- lehetővé rács

Isten ments, hogy valaki azt látja, hogy.

a Desdechado
# XA0; DBGRID.DataSource.DataSet.DisableControls
# XA0; Tiltja az adatok kijelző adatértő kapcsolatos kontrollok az adathalmaz.

# XA0 I DBGrid eljárás DisableControls nem!

És ami a legfontosabb, írtam megegyezik tesztelt.


> A DBGrid eljárás DisableControls nem!

Természetesen. DisableControls tartozik Adatbázis „y.


> Tiltja az adatok kijelző adatértő kapcsolatos kontrollok
> Az adatbázisba.

Lefordítva. Valahol látja a „frissített”?

Bár, ha még mindig nem működik, akkor meg kell keresni valami mást.

By the way, valami, amit le kell tölteni a fájlt nem akar. Lefektetett egy másik helyre.

De ösztönösen:
Ha letiltja a rács maga? Ie pl betette a engedélyezve van?
Vagy letiltása DrawCell? Mivel ez az úgynevezett amikor rendering? Kikapcsolása DrawCell - hide panel - többek között DrawCell?

Ha valami, akkor bánja a lábad ne nyomja. Még az arcát :)







Ha a mozgás panel mérete / tartalmát rács nem változik, ez elég ahhoz, hogy egy ablak osztály panel beállítása CS_SAVEBITS zászló.
Rács nem rajzolni, ha ComboBox megnyílik.
Mert nefig.

Igor
# XA0; Ez lehet egy kicsit részletesebben, ahol az ingatlan a zászló?


> # XA0; Ez lehet egy kicsit részletesebben, ahol az ingatlan van kitéve
> Flag?

A panel átfedi módszer CreateParams, írva van abban:

eljárás TMyPanel.CreateParams (var Params: TCreateParams);
kezdődik
# XA0; örökölt;
# XA0; WindowClass.Style: = WindowClass.Style vagy CS_SAVEBITS;
végén;


> Különösen festett.

Miért DrawCell majd ürítse?

a LOL
# XA0, jól, elvileg a vas logika! Igazán fogott. De egyébként is, mondjuk # XA0, nincs prettification.

Igor
# XA0, azaz. Azt javasolta, hogy hozzon létre egy eleme a panel?


> De egyébként is, mondjuk # XA0, nincs prettification.

Szóval Nem értem. Tehát van-e vagy sem?

veb # XA0; (06.04.06 17:24) [20]


> # XA0, azaz. Azt javasolta, hogy hozzon létre egy eleme a panel?

Nos, nem egészen az alkatrész, és az örökös a meglévő. Akkor biztosan megpróbál, hogy a rendelkezésre álló ablak panel készlet osztály stílus:

# XA0; SetClassLong (Panel1.Handle, GCL_STYLE, GetClassLong (Panel1.Handle, GCL_STYLE) vagy CS_SAVEBITS);
# XA0; Panel1.Perform (CM_RECREATEWND, 0, 0);

de somevayus hogy ez a módszer segít.

Volt egy erős a gyanú, hogy úgy van kialakítva, mint ez:

i: = Panel1.Left a Panel1.Bounds.Right csinálni
kezdődik
# XA0; Panel1.Left: = i;
# XA0; Application.ProcessMessages;
végén;

Nyilvánvaló, hogy miután minden egyes nyírási panel a képpontrácsra készült (Erős a gyanúm, hogy szinte minden, ez nem igazán az optimalizált). Ezért a javasolt határozat [7] a)


> Sajnálom, én találtam néztél. )

Nem. Azt EXEshniki ne töltse le, van elég, hogy a vírusok :) És mi lehet olyan érdekes?

Panel kilépő időzítő (tmVisPanel) kapcsoló gomb. Határozottan minden alkalommal átrajzolta GRID. Ezért szeretnék letiltani újrarajzolás Grida.

eljárás TfmDisks.tmVisPanelTimer (Sender: TObject);
var dx. integer;
kezdődik
# XA0; ha sbVisiblePanel.Down majd dx: = -20 mást dx: = 20; // gomb megnyomása
# XA0; paMRight.Width: = paMRight.Width - dx;
# XA0, ha paMRight.Width <1 then begin
# XA0; # XA0; paMRight.Width: = 1;
# XA0; # XA0; tmVisPanel.Enabled: = false;
# XA0; end;
# XA0; ha paMRight.Width> = 300, akkor # XA0; kezdődik
# XA0; # XA0; paMRight.Width: = 300;
# XA0; # XA0; tmVisPanel.Enabled: = false;
# XA0; end;
végén;

Uram, sajnálom, hogy nem a megfelelő kérdést. Postil kódot, és rájöttem, hogy mennyire bevezettem a zűrzavar. a probléma továbbra is igaz.
a GRIDOM panel képes align = alClient. bár, ami mozog # XA0; align = rendben. Mozgó a panel egyszerűen mérete csökkent. A panel c DBGridom elfoglalja az egész teret.

Kérdezzen, hogyan kell optimalizálni, vagy általában, hogyan a helyes hagyva sima, ellenőrizze a panel?

Igor
# XA0; garanciát otstutstvie rosszindulatú kódot! A viccet egy ugrás exe-Schnick tetszik.

> VEB # XA0; (07.04.06 00:07) [27]
> Panel GRIDOM igyekeznek beállni = alClient. és a panel,
> # XA0, azaz mozog # XA0; align = rendben. Egyszerűen mozgó panel
> Csökkentett méretű. A panel c DBGridom veszi az összes
> Tér.

Tada jobb, azt hiszem.

Közvetlenül a gomb megnyomása után:
Grid.align: = nincs;
Panel.align: = nincs; (Ebben a sorrendben!)

Timer:
Panel.Left = Panel.Left - 1;
Grid.Bounds.Right: = Grid.Bounds.Right + 1;

Miután a panel bal - helyreállítása
Grid.align: = kliens;

Érzékelik, és más ajánlások fickó otmnyaet nem, de nekem úgy tűnik, javult. De én nem teszteltem.


> Prompt, hogyan kell optimalizálni, vagy úgy általában, hogyan a helyes dolgot
> Smooth indulás, érkezés panel?

Van egy erős a gyanú, hogy az ideális módja.




Kapcsolódó cikkek