Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2017, 19:58   #1
Серёга Русич
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 31
Злость Код выполняется не по порядку

Добрый вечер, уважаемые!

Пишу программу, которая заполняет шаблон данными:
При нажатии на кнопку данные из StringGrid'а распихиваются по Label'ам, в Image загружается изображение из файла, после чего делается скриншот формы и получившееся изображение сохраняется в файл. Но у меня почему-то делается сначала скриншот формы и только после этого заполняются label'ы и подгружается изображение, хотя последовательность действий в коде верная

Вот, собсно, кусок кода:

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  S : String;
  i, Len : Integer;
  SignZ: Integer;
  Pol: String;
  Vozrast: Integer;
  VozrastFolder: String;
  bmp:TbitMap;
  SendJPG:TJPEGImage;
begin


//Внести данные из таблицы в лейблы
Form2.Label1.Caption:=StringGrid1.Cells[8, 1];
Form2.Label4.Caption:=StringGrid1.Cells[9, 1];
Form2.Label2.Caption:=StringGrid1.Cells[10, 1];
Form2.Label6.Caption:=StringGrid1.Cells[2, 1];
Form2.Label7.Caption:=StringGrid1.Cells[3, 1];
Form2.Label8.Caption:=StringGrid1.Cells[4, 1];

//Загрузить изображение
Form2.SignZav.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Data\Signatures\' + '1' + '.jpg');

//Сохранение в файл готового изображения при помощи скриншота
bmp:=tbitmap.Create;
SendJPG:=TJPEGImage.Create;
bmp.Width:=form2.Width;
bmp.Height:=form2.Height;
BitBlt(bmp.Canvas.Handle,0,0,form2.Width,form2.Height,getdc(form2.handle),0,0,SRCCOPY);
SendJPG.Assign(bmp);
DoneImage.Picture.Assign(SendJPG);
DoneImage.Picture.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Content\' + Form1.StringGrid1.Cells[0, 1] + '.jpg');
end;
До выполнения данного кода вторая форма уже открыта
Подскажите, пожалуйста, в чем может быть проблема?
Серёга Русич вне форума Ответить с цитированием
Старый 12.02.2017, 20:11   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сделай репаинт или рефреш формы перед скриншотом
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.02.2017, 20:19   #3
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Есть такая полезная штука - Application.ProcessMessages...
kropotkina-alice вне форума Ответить с цитированием
Старый 12.02.2017, 20:29   #4
Серёга Русич
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Сделай репаинт или рефреш формы перед скриншотом
Спасибо большое! Репеинт помог

Цитата:
Сообщение от kropotkina-alice Посмотреть сообщение
Есть такая полезная штука - Application.ProcessMessages...
Спасибо, почитаю про неё на досуге
Серёга Русич вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему код выполняется правильно только один раз? Questru Microsoft Office Excel 8 25.01.2013 09:50
Не выполняется код после вызова другой процедуры... sorockinalex Общие вопросы Delphi 3 09.09.2012 18:24
Вывод по порядку kronadenis C# (си шарп) 9 25.06.2012 12:40
почему не выполняется 3-е движение? Код на Pascal ABC.NET Рафиль Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2011 13:01
Узнать, на какой странице выполняется код Winlook PHP 1 27.03.2010 04:44