Thread View: pl.comp.lang.delphi
4 messages
4 total messages
Started by Bartłomiej Sosenko
Fri, 19 Aug 2016 07:54
Optymalizacja wyświetlania tworzonych komponentów
Author: Bartłomiej Sosenko
Date: Fri, 19 Aug 2016 07:54
Date: Fri, 19 Aug 2016 07:54
7 lines
1745 bytes
1745 bytes
W momencie otwierania okna doczytywana jest dynamicznie lista pól edycji która ma się pojawić. Jeśli bym to robił standardowo to dość brzydko widać jak obiekty się kolejno rysują (jest ich kilkanaście) Jeśli wyłączę widoczność panelu na którym się to rysuje i włączę po utworzeniu wszystkich elementów to efekt jest zadowalający ale jakoś mam wrażenie że jest na to bardziej sensowne rozwiązanie na które niestety się nie natknąłem. Możecie podpowiedzieć gdzie szukać? Dzięki!
Re: Optymalizacja wyświetlania tworzonych komponentów
Author: m
Date: Fri, 19 Aug 2016 08:21
Date: Fri, 19 Aug 2016 08:21
45 lines
2438 bytes
2438 bytes
W dniu 2016-08-19 o 09:54, Bartłomiej Sosenko pisze:
> W momencie otwierania okna doczytywana jest dynamicznie lista pól edycji która ma się pojawić.
>
> Jeśli bym to robił standardowo to dość brzydko widać jak obiekty się kolejno rysują (jest ich kilkanaście)
> Jeśli wyłączę widoczność panelu na którym się to rysuje i włączę po utworzeniu wszystkich elementów to efekt jest zadowalający ale jakoś mam wrażenie że jest na to bardziej sensowne rozwiązanie na które niestety się nie natknąłem.
>
> Możecie podpowiedzieć gdzie szukać?
> Dzięki!
>
Dziwne że dla kilkunastu komponentów jest to problem moze podczas
dodawania cos sie musi policzyc ?
U mnie 1000 TEdit dodaje sie w 890ms. 100 sztuk w 94ms
procedure TForm28.Button1Click(Sender: TObject);
var
e: Tedit;
I: Integer;
dw: Dword;
WindowLocked: Boolean;
begin
AllocConsole;
dw := GetTickCount;
WindowLocked := LockWindowUpdate(Application.MainForm.Handle);
try
for I := 0 to 100 - 1 do
begin
e := Tedit.Create(Self);
e.Top := Random(Width);
e.Left := Random(Height);
e.Width := Random(255);
e.Height := Random(64);
e.Text := IntToStr(Random( High(Integer)));
e.Parent := Self;
end;
finally
if WindowLocked then
LockWindowUpdate(0);
end;
Writeln('Czas=', GetTickCount - dw);
end;
M
Re: Optymalizacja wyświetlania tworzonych komponentów
Author: Bartłomiej Sosenko
Date: Fri, 19 Aug 2016 10:44
Date: Fri, 19 Aug 2016 10:44
18 lines
2784 bytes
2784 bytes
W dniu piątek, 19 sierpnia 2016 10:21:40 UTC+2 użytkownik m napisał: > W dniu 2016-08-19 o 09:54, Bartłomiej Sosenko pisze: > > W momencie otwierania okna doczytywana jest dynamicznie lista pól edycji która ma się pojawić. > > > > Jeśli bym to robił standardowo to dość brzydko widać jak obiekty się kolejno rysują (jest ich kilkanaście) > > Jeśli wyłączę widoczność panelu na którym się to rysuje i włączę po utworzeniu wszystkich elementów to efekt jest zadowalający ale jakoś mam wrażenie że jest na to bardziej sensowne rozwiązanie na które niestety się nie natknąłem. > > > > Możecie podpowiedzieć gdzie szukać? > > Dzięki! > > > Dziwne że dla kilkunastu komponentów jest to problem moze podczas > dodawania cos sie musi policzyc ? Nie, nic się nie liczy ale parametry tworzonych komponentów wczytywane są z kolejnych rekordów bazy danych więc może to powoduje opóźnienie. U mnie przy kilkunastu elementach zajmuje mu to około sekundy ale właściwie nie ma różnicy czy jest ich kilka czy kilkadziesiąt... muszę jeszcze poszperać w kodzie co dokładnie powoduje opóźnienie. Tak czy inaczej właśnie tego szukałem: LockWindowUpdate ;) Wrzuciłem - działa. Dzięki za pomoc!
Re: Optymalizacja wyświetlania tworzonych komponentów
Author: J-23
Date: Fri, 19 Aug 2016 16:48
Date: Fri, 19 Aug 2016 16:48
21 lines
2546 bytes
2546 bytes
W dniu 19.08.2016 o 12:44, Bartłomiej Sosenko pisze: > W dniu piątek, 19 sierpnia 2016 10:21:40 UTC+2 użytkownik m napisał: >> W dniu 2016-08-19 o 09:54, Bartłomiej Sosenko pisze: >>> W momencie otwierania okna doczytywana jest dynamicznie lista pól edycji która ma się pojawić. >>> >>> Jeśli bym to robił standardowo to dość brzydko widać jak obiekty się kolejno rysują (jest ich kilkanaście) >>> Jeśli wyłączę widoczność panelu na którym się to rysuje i włączę po utworzeniu wszystkich elementów to efekt jest zadowalający ale jakoś mam wrażenie że jest na to bardziej sensowne rozwiązanie na które niestety się nie natknąłem. >>> >>> Możecie podpowiedzieć gdzie szukać? >>> Dzięki! >>> >> Dziwne że dla kilkunastu komponentów jest to problem moze podczas >> dodawania cos sie musi policzyc ? > > Nie, nic się nie liczy ale parametry tworzonych komponentów wczytywane są z kolejnych rekordów bazy danych więc może to powoduje opóźnienie. U mnie przy kilkunastu elementach zajmuje mu to około sekundy ale właściwie nie ma różnicy czy jest ich kilka czy kilkadziesiąt... muszę jeszcze poszperać w kodzie co dokładnie powoduje opóźnienie. Wątpię by to było przyczyną ale dla wszystkie zawsze możesz zrobić prosty test te same dane wczytaj z pamięci i zobaczysz jak się będzie to zachowywać Pozdrawiam
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads