![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему показывает график только после выхода из проги??? [D7, WinXP]
cvg © (2004-12-01 16:02:00)Hi All! Тут недавно я задавал вопрос. Это его продолжение. Короче, простенький каркас проги, но график выводится на экран все только по завершении программы, а по моему разумению вывод на экран должен происходить каждый цикл по команде Application.ProcessMessages;... Почему???
Ниже -- тексты файлов Project1.dpr и Unit1.pas:
program Project1;
uses
Forms, SysUtils, Dialogs,
Windows, Messages, Variants, Classes, Graphics, Controls,
StdCtrls, ExtCtrls, OleServer, ClipBrd, StrUtils,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
// TForm1.Width := Screen.Width;
Application.Run;
end.
и
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, OleServer, ClipBrd, StrUtils, math,
DateUtils, TeeProcs, TeEngine, Chart, Series, BubbleCh, Qt;
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TLineSeries;
procedure Showing(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1; n:integer;
implementation
{$R *.dfm}
procedure TForm1.Showing(Sender: TObject);
var n:integer;
begin
n := 0;
repeat
n := n + 1;
Series1.AddXY(n,n/2,'qq',clRed);
Application.ProcessMessages;
until n > 300;
end;
end.
cvg (2004-12-01 17:49:00) [1]Во, блин, спасибо огромное -- по OnActivate спаботало!!!
Amadey (2004-12-01 17:38:00) [2]А отображение формы происходит только после выполнения OnCreate().
Поэтому тебе необходимо делать прорисовку либо при нажатии кнопки либо из запускающей формы, например
GraphicForm := TGraphicForm.Create(Aplication);
GraphicForm.Show;
GraphicForm.Showing(Self);
...
Если нехочешь делать кнопку или использовать другую форму, тогда можно попробовать при событии OnActivate(). Это событие вызывается уже после прорисовки самого окна формы.
cvg (2004-12-01 17:17:00) [3]А, да, забыл сказать, что в Events для Form1 стоит OnCreate - Showing.
Amoeba (2004-12-01 17:01:00) [4]А где в программе происходит вызов этого метода?
procedure TForm1.Showing(Sender: TObject);
cvg (2004-12-01 16:45:00) [5]Хмм, я воообще обнаружл, что и сама форма выводится на экран только в конце программы. Как сделать, чтобы это было в начале?
olookin (2004-12-01 16:25:00) [6]Chart1.Update?
cvg (2004-12-01 16:23:00) [7]Ну, в смысле, когда в отладчике прога доходит до последнего энда (который с точкой).
MBo (2004-12-01 16:16:00) [8]график выводится на экран все только по завершении программы
это как???