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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2009, 13:33   #1
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию Помогите разобраться в ошибке

две формы Lab4_add и Lab4_add_os, обе прописаны друг у друга в USES, делаю обрашение между друг другом, просто пишу:
Код:
procedure TLab4_add_os.bbAddClick(Sender: TObject);
begin
  Lab4_add.Image2.Visible:=true;
  close;
end;
Появляется ошибка иненно на Lab4_add.Image2.Visible:=true;



Это происходит уже не первый раз, в другом проекте она появлялась даже при изменении свойства, Label1.caption := 'Привет!'; внутри формы

Причем это не зависит от среды разработки, пробовал компилировать на другом компьютере, всё тоже самое
nimbler вне форума Ответить с цитированием
Старый 27.06.2009, 13:52   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ошибка в логике программы.
Нельзя изменить переменную объекта, который ещё не создан.
в момент нажатия на кнопочку bbAdd (на форме TLab4_add_os) форма Lab4_add НЕ СОЗДАНА.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.06.2009, 13:55   #3
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию

Дело в том что она создана и с неё кодом
Код:
procedure TLab4_add.BitBtn1Click(Sender: TObject);
var
  Lab4_add_os: TLab4_add_os;
begin
  Lab4_add_os := TLab4_add_os.Create(self);
  Lab4_add_os.ShowModal;
end;
создаётся Lab4_add_os
nimbler вне форума Ответить с цитированием
Старый 27.06.2009, 13:58   #4
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию

а на форме Lab4_add_os выполняется выше описанная процедура

Я сам не пойму в чём дело?
nimbler вне форума Ответить с цитированием
Старый 27.06.2009, 14:06   #5
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

А в событии OnCreate формы Lab4_add объект Image2 создается ?
Скорее всего нет, раз уж
Цитата:
Появляется ошибка иненно на Lab4_add.Image2.Visible:=true;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 27.06.2009, 14:11   #6
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию

Да дело даже не в этом

Я только что написал вместо Lab4_add.Image2.Visible:=true;
Lab4_add.Caption := '123';

И ничего, всё работает, ошибка не появляется, но Caption тоже не меняется.

Могу даже прислать прогу
nimbler вне форума Ответить с цитированием
Старый 27.06.2009, 14:16   #7
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию

А может быть дело в том, что форма Lab4_add наследована от формы TFormParent, которая не запущена.

Вот код родительской формы

Код:
unit uParent;

interface

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

type
  TParentForm = class(TForm)
  private
    { Private declarations }
    procedure WMActivate(var Message: TWMActivate); message WM_ACTIVATE;
    procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
    procedure TWMWindowPosMsg(var Message: TWMWindowPosMsg); message WM_WINDOWPOSCHANGING;
  protected
    procedure CreateForm; virtual;
    procedure CreateParams(var Params: TCreateParams); override;
    procedure DoClose(var Action: TCloseAction); override;
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

var
  ParentForm: TParentForm;

implementation

Uses Udecktop;

{$R *.dfm}

{ TParentForm }

constructor TParentForm.Create(AOwner: TComponent);
begin
  inherited;
  CreateForm;
  fmMain.AddWnd(Caption, Self); 
end;

procedure TParentForm.CreateForm; 
begin
end;

procedure TParentForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  with Params do
  begin
    WndParent := fmMain.Handle; 
  end
end;

destructor TParentForm.Destroy;
begin
  fmMain.DelWnd(Self);
  inherited;
end;

procedure TParentForm.DoClose(var Action: TCloseAction);
begin              
  if Action = caHide then ShowWindow(Handle, SW_HIDE); 
end;

procedure TParentForm.TWMWindowPosMsg(var Message: TWMWindowPosMsg);
//var
  //Rect: TRect;
begin
  inherited;
  if (GetWindowLong(Handle, GWL_STYLE) and WS_MAXIMIZE <> 0) then
  begin
    //SystemParametersInfo(SPI_GETWORKAREA, 0, @Rect, 0);
    Message.WindowPos.x := fmMain.Left;
    Message.WindowPos.y := fmMain.Top;
    Message.WindowPos.cx := fmMain.Width;
    Message.WindowPos.cy := fmMain.Height - 35; 
    //Message.WindowPos.flags := SWP_NOMOVE;//NOREPOSITION;
  end;
end;

procedure TParentForm.WMActivate(var Message: TWMActivate);
begin
  inherited;
  case Message.Active of
    WA_ACTIVE, WA_CLICKACTIVE: fmMain.ActiveWnd(Self);
  end;
end;

procedure TParentForm.WMSysCommand(var Message: TMessage);
begin
  if (Message.WParam = SC_MINIMIZE) then 
  begin
    ShowWindow(Handle, SW_HIDE);
    if not (IsWindowVisible(GetWindow(Handle, GW_HWNDNEXT)) or IsWindowVisible(GetWindow(Handle, GW_HWNDPREV))) then
      Windows.SetFocus(GetWindow(Handle, GW_OWNER)); 
  end else
    inherited
end;

end.
nimbler вне форума Ответить с цитированием
Старый 27.06.2009, 14:31   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

выкладывайте проект (только запакуйте предварительно исходники)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.06.2009, 14:40   #9
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию

Вот выложил на народДиск
http://narod.ru/disk/10328697000/123.7z.html

Форма запускается Пуск(У меня эмулятор Windows) -> Выполнить -> "mmc" -> Ok -> Консоль -> добавить или удалить оснастку -> Добавить (Дальше появляется эта "глюченая форма") и ещё раз добавить. Вот в этом месте и появляется эта ошибка
nimbler вне форума Ответить с цитированием
Старый 27.06.2009, 14:58   #10
nimbler
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 15
По умолчанию

Чуть не забыл, там есть нестандартные компоненты

вот они
http://narod.ru/disk/10329179000/wwwqqq.7z.html
nimbler вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сообщение об ошибке! QWERT1988 Общие вопросы Delphi 4 01.06.2009 17:14
Помогите!!! Прога пытается отправить отчет об ошибке. syserg Общие вопросы Delphi 2 16.04.2009 05:05
Помогите разобраться в ошибке! Doget Помощь студентам 6 09.02.2009 20:18
Перхват сообщения об ошибке!!!! chekanoff Общие вопросы Delphi 4 10.12.2007 10:14