Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.04;
Скачать: CL | DM;

Вниз

загрузить форму не из [unit_name].dfm   Найти похожие ветки 

 
i-am-vladko ©   (2007-01-10 20:32) [0]

Есть unit1.dfm,создаю unit1new.dfm, ставлю
{$IFNDEF MY_VAR}{$R *.dfm}{$ELSE}{$R *new.dfm}{$ENDIF}
- при {$DEFINE MY_VAR} форма все равно грузится из unit1.dfm
Разъясните, пожалуйста, что не так


 
i-am-vladko ©   (2007-01-10 20:43) [1]

если MY_VAR задать в начале модуля, не в Project->... - начинает грузить из файла unit1new.dfm и выдает UNSUPPORTED 16bit RESOURSE


 
i-am-vladko ©   (2007-01-10 20:48) [2]

к
> i-am-vladko ©   (10.01.07 20:43) [1]

- я еще сменил {$IFNDEF MY_VAR}{$R *.dfm}{$ELSE}{$R *.dfz}{$ENDIF}


 
ors_archangel ©   (2007-01-10 23:19) [3]

[0-2]
Интересно, что тебе это даст? Ведь ресурс через {$r} линкуется всё равно статически


 
Игорь Шевченко ©   (2007-01-10 23:26) [4]

unit main;
{$DEFINE FOO}
interface

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

type
 TForm1 = class(TForm)
 end;

var
 Form1: TForm1;

implementation

{$IFNDEF FOO}
{$R *.dfm}
{$ELSE}
{$R main1.dfm}
{$ENDIF}

end.


main.dfm

object Form1: TForm1
 Left = 0
 Top = 0
 Caption = "Not defined"
 ClientHeight = 293
 ClientWidth = 426
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "Tahoma"
 Font.Style = []
 OldCreateOrder = False
 PixelsPerInch = 96
 TextHeight = 13
end


main1.dfm

object Form1: TForm1
 Left = 0
 Top = 0
 Caption = "Defined"
 ClientHeight = 293
 ClientWidth = 426
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "Tahoma"
 Font.Style = []
 OldCreateOrder = False
 PixelsPerInch = 96
 TextHeight = 13
end


Все прекрасно работает, просто если не *.dfm, то имя надо явно указывать в директиве $R


 
i-am-vladko ©   (2007-01-11 11:41) [5]

Очень хорошо работает только если обе формы пустые...


 
Desdechado ©   (2007-01-11 12:12) [6]

Если у форм разный состав компонентов или разные названия, то явно описание класса не совпадет с атрибутами форм из ресурса.


 
Игорь Шевченко ©   (2007-01-11 12:17) [7]


> Очень хорошо работает только если обе формы пустые...


С непустыми формами работает точно также.

Тебе чего надо-то ?


 
i-am-vladko ©   (2007-01-11 12:25) [8]


> Игорь Шевченко ©   (11.01.07 12:17) [7]

Как раз ситуация когда у форм разный состав компонентов (чето такое):

TForm1 = class(TForm)
{$IFDEF FOO}
Query : TQuery;
DataBase : TDataBase;
StoredProc : TStoredProc;
{$ELSE}
Query : TZQuery;
DataBase : TZConnection;
StoredProc : TZStoredProc;
{$ENDIF}
end;


 
Игорь Шевченко ©   (2007-01-11 12:28) [9]

i-am-vladko ©   (11.01.07 12:25) [8]

Не вижу проблемы:

unit main;

interface
{$DEFINE FOO}
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls
{$IFDEF FOO}
 , Buttons
{$ENDIF}
 ;

type
 TForm1 = class(TForm)
   Edit1: TEdit;
{$IFDEF FOO}
   Button1: TBitBtn;
{$ELSE}
   Button1: TButton;
{$ENDIF}
   procedure Button1Click(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$IFNDEF FOO}
{$R *.dfm}
{$ELSE}
{$R main1.dfm}
{$ENDIF}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.Text := "FOO";
end;


 
i-am-vladko ©   (2007-01-11 12:53) [10]

Вот точно так все и делаю - постоянно лезет
"Field should be of Type [first_type] but is declared [second_type]. Correct the declaration ?"


 
Игорь Шевченко ©   (2007-01-11 13:13) [11]

i-am-vladko ©   (11.01.07 12:53) [10]


> Вот точно так все и делаю - постоянно лезет
> "Field should be of Type [first_type] but is declared [second_type].
>  Correct the declaration ?"


Твой компьютер у тебя под рукой - разбирайся. У меня все прекрасно работает.


 
Desdechado ©   (2007-01-11 13:13) [12]

Значит, не Вот точно так все и делаю. Где-то прозевал свой fielddef.

PS не уверен, что IDE поддерживает вилку в загрузке формы для редактирования


 
Desdechado ©   (2007-01-11 13:14) [13]

Это же инструкции компилятору, вернее, препроцессору. А не редактору форм.


 
i-am-vladko ©   (2007-01-11 14:55) [14]


> Desdechado ©   (11.01.07 13:14) [13]

А есть инструкции редактору форм? )


 
Desdechado ©   (2007-01-11 15:16) [15]

Если эти формы и компоненты настолько отличаются, не проще ли сделать 2 независимых модуля? A в DPR уже прописать через IFDEF сборку с нужной парой pas-dfm.


 
Desdechado ©   (2007-01-11 15:16) [16]

Тогда можно будет и в редакторе IDE все исправлять нормально.


 
GrayFace ©   (2007-01-12 02:24) [17]

Или вариант - создать свои пустые компоенты, наследующиеся либо от TZQuery, либо от TQuery.


 
GrayFace ©   (2007-01-12 02:36) [18]

Правда, если свойства, которые ты хочешь редактировать в Design-Time присутствуют в одном и отсутствуют в другом, придется постоянно пересобирать пакет с этими компонентами. Но если включить в ProjectGroup пакет, то нормально. Еще тогда нет смысла в *new.dfm, все-равно в Design-Time загрузится тот, что с именем модуля. Так что стоит создать .bat-ники, копирующие нужный dfm.


 
GrayFace ©   (2007-01-12 02:42) [19]

Можно еще облегчить жизнь - сделать не .bat-ники, а .exe-шки и условия для Design-Time менять ими. Например, переключать строки {$IFDEF OldUnitLinked} и {$IFNDEF NewUnitLinked} простым StringReplace"ом. В самом коде OldUnitLinked и NewUnitLinked не использовать, их можно вообже никогда не DEFINE"ить.



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

Текущий архив: 2007.03.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.036 c
1-1168662909
ПАСЮТА
2007-01-13 07:35
2007.03.04
directX


6-1159248027
WhiteBarin
2006-09-26 09:20
2007.03.04
Как определить IP подсоединённого клиента на стандартный сервер W


15-1170785730
Стаффаж
2007-02-06 21:15
2007.03.04
Программист ищет работу. "ин тим" - не предлагать.


15-1171137575
C2h5
2007-02-10 22:59
2007.03.04
Установка Билдера


2-1170691512
The X
2007-02-05 19:05
2007.03.04
Каракули вместо кириллицы на MessageDlg в XP SP1