Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.09.01;
Скачать: [xml.tar.bz2];

Вниз

подвисает прорисовка контролов   Найти похожие ветки 

 
TForm   (2012-12-22 15:00) [0]

по нажатию на кнопку в программе, выполняется sql-запрос, который отбирает нуженые записи и выводит их. если записей много, то на этапе выполнения sql-запроса подвисает прорисовка контролов на форме. как это исправить?


 
Юрий Зотов ©   (2012-12-22 15:35) [1]

DisableControls?


 
TForm   (2012-12-22 15:54) [2]


> DisableControls?


не помогает


 
antonn ©   (2012-12-22 16:02) [3]


> Юрий Зотов ©   (22.12.12 15:35) [1]

видимо речь о вынесении работы с БД в отдельный поток...


 
TForm   (2012-12-22 16:14) [4]

Для примера, без БД

Модуль основной форм:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

uses unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 Form2: TForm2;
begin
 Application.CreateForm(TForm2, Form2);
 try
   if Form2.ShowModal = mrOK then
     Form2.EmulateSlowOperation;
 finally
   Form2.Free;
 end;
end;

end.


Модуль модальной формы:


unit Unit2;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm2 = class(TForm)
   Button1: TButton;
 private
   { Private declarations }
 public
   { Public declarations }
   procedure EmulateSlowOperation;
 end;

var
 Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

procedure TForm2.EmulateSlowOperation;
var
 I: Integer;
begin
 for I := 0 to 20 do
 begin
   Sleep(100);
 end;
end;

end.


Ситуация:

1. Вызываем модальную форму по нажатию кнопки Button1 в основной форме
2. Перемещаем отобразившуюся модальную форму так, чтобы она частично перекрывала кнопку Button1 в основной форме
3. Нажимаем кнопку Button1 в модальной форме

Итог: На момент выполнения метода EmulateSlowOperation некорректно отрисовывается кнопка Button1 в основной форме.


 
RWolf ©   (2012-12-22 16:17) [5]

procedure TForm2.EmulateSlowOperation;
var
 I: Integer;
begin
 for I := 0 to 20 do
 begin
   Sleep(100);
   Application.ProcessMessages;
 end;
end;


 
TForm   (2012-12-22 16:19) [6]


> for I := 0 to 20 do
>  begin
>    Sleep(100);
>    Application.ProcessMessages;
>  end;


у меня здесь вместо цикла запрос на выборку большого количества записей. вставка ProcessMessages проблему не решила.


 
RWolf ©   (2012-12-22 16:21) [7]

тогда в отдельный поток.


 
TForm   (2012-12-22 16:30) [8]


> в отдельный поток


помогло, спасибо



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.09.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
15-1364323263
TStas
2013-03-26 22:41
2013.09.01
Как узнать, как войти в БИОС ноутбука?


2-1356079437
Женя
2012-12-21 12:43
2013.09.01
Квадратное уравнение


1-1312192872
Zoro
2011-08-01 14:01
2013.09.01
Работа с gzip.dll


2-1356154304
Виталий
2012-12-22 09:31
2013.09.01
как оцифровать звук (.wav)


15-1363850215
RWolf
2013-03-21 11:16
2013.09.01
Page Control с открепляемыми вкладками





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский