Форум: "Основная";
Текущий архив: 2007.03.04;
Скачать: [xml.tar.bz2];
Вниззагрузить форму не из [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.dfmobject 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.dfmobject 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.034 c