глюки ShowModal
От: Sergey__ Россия  
Дата: 31.01.11 07:58
Оценка:
  Application.CreateForm(TRegForm, RegForm);
  RegForm.ShowModal;


почему то RegForm мелькает на экране не задерживаясь ни на секунду!



unit RegUnit;

interface

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

type
  TRegForm = class(TForm)
    lbl1: TLabel;
    Label3: TLabel;
    Label2: TLabel;
    FIO: TEdit;
    edtDolgnost: TEdit;
    Button2: TButton;
    edtUchregdenie: TEdit;
    lblUchregdenie: TLabel;
    EdtRegion: TEdit;
    Label1: TLabel;
    btnCancel: TButton;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  RegForm: TRegForm;

implementation

uses Bilet__Unit, Logic_Unit;

{$R *.dfm}

procedure TRegForm.Button2Click(Sender: TObject);
begin
  ModalResult := mrOk;
end;

end.
Sergey
Re: глюки ShowModal
От: sined  
Дата: 31.01.11 08:42
Оценка:
Здравствуйте, Sergey__, Вы писали:


Если версия Delphi 2007 и выше то такое может быть
при определенных условиях , ключ ко всему это свойства
Application.ModalPopupMode и TForm.PopupMode
а также как я смог заметить время когда создаются формы
если они создаются до показа главной формы то скорее всего
все будет ок если же где то динамично после показа главной формы
то могут быть описанные эффекты
Re[2]: глюки ShowModal
От: Sergey__ Россия  
Дата: 31.01.11 09:02
Оценка:
Здравствуйте, sined, Вы писали:

S>Здравствуйте, Sergey__, Вы писали:



S>Если версия Delphi 2007 и выше то такое может быть

S>при определенных условиях , ключ ко всему это свойства
S>Application.ModalPopupMode и TForm.PopupMode
S>а также как я смог заметить время когда создаются формы
S>если они создаются до показа главной формы то скорее всего
S>все будет ок если же где то динамично после показа главной формы
S>то могут быть описанные эффекты


1) версия Delphi 7,
о PopupMode и ModalPopupMode — Delphi7 не подозревает

2) формы, кроме майн, создаются динамически

procedure TMainForm.FormShow(Sender: TObject);
begin
  Application.CreateForm(TRegForm, RegForm);
  RegForm.ShowModal;



3) и даже в DFM ничего подозрительного нет:
object RegForm: TRegForm
  Left = 465
  Top = 344
  Width = 286
  Height = 404
  Caption = #1056#1077#1075#1080#1089#1090#1088#1072#1094#1080#1103'                                '
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  PixelsPerInch = 96
  TextHeight = 13
  object lbl1: TLabel
    Left = 10
    Top = 0
    Width = 161
    Height = 13
    Caption = #1056#1077#1075#1080#1089#1090#1088#1072#1094#1080#1103'                                '
    Visible = False
  end

  object Button2: TButton
    Left = 38
    Top = 284
    Width = 203
    Height = 25
    Caption = #1043#1086#1090#1086#1074#1086' ('#1072#1085#1082#1077#1090#1072' '#1079#1072#1087#1086#1083#1085#1077#1085#1072')'
    Default = True
    ModalResult = 1
    TabOrder = 2
    OnClick = Button2Click
  end

end
Sergey
Re: глюки ShowModal
От: Dimonka Верблюд  
Дата: 02.02.11 08:46
Оценка:
Здравствуйте, Sergey__, Вы писали:

Application.CreateForm(TRegForm, RegForm);
RegForm.ShowModal;


S__>почему то RegForm мелькает на экране не задерживаясь ни на секунду!


Есть небольшой вопрос: где ты её создаёшь и зачем?

Вот пример рабочего кода. Форма регистрации показывается по таймеру через минимальное время после создания главной формы:
procedure TFormMain.ShowRegForm(Started: Boolean = true);
var
  FormReg: TFormReg;
begin
  FormReg := TFormReg.Create(Self);
  FormReg.AlreadyStarted := Started;
  FormReg.ShowModal;
  FormReg.Free;
end;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.