![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как заменить txfxfButton на кнопку [D7, WinXP]
maxim_m_m © (2004-07-27 16:12:00)Здравствуйте!
В старом проекте использовал какой-то левый кнопочный компонент
и теперь я не могу редактировать программу, форма не создаётся. dfm в каком-то ужасном нечитабельном виде(раньше я мог редактрировать dfm) что-то вроде utf-8
простой заменой tfxfxbtn на tbutton мне не отделаться. какие будут предложения?
Рамиль (2004-07-28 12:24:00) [1]
> [5] maxim_m_m (28.07.04 11:34)
В папке BIN есть утилитка convert.exe - преобразует из бинарного формата в текстовый и обратно.
maxim_m_m (2004-07-28 11:34:00) [2]to:[4]
Если бы форма открывалась, вопроса бы не было.
Athlon XP (2004-07-28 03:30:00) [3]В IDE в редакторе кода правую нажми, и в меню выбери что-то вроде "view as text" - появится нормальный исходник формы. Его скопирую и слей в текстовик. Проект выгрузи, и тот текстовик переименуй в DFM. Только старый (бинарный) сохрани... Я сам не пробовал, но должно работать :)
---
Intel Inside - Idiot Outside
ЮЮ (2004-07-28 02:58:00) [4]>Но большие dfm'ы delphi портит
Просто существует два формата хранения dfm - текстовый и бинарный. Ты сейчас столкнулся с бинарным.
maxim_m_m (2004-07-27 18:54:00) [5]спасибо за ответ!
но я уже пробовал менять в dfm файлах на tbutton,
но после этого Delphi говорит что в dfm файле ошибка (invalid stream format).
так что это спасает только тогда, когда dfm имеет красивый вид, вроде:
object Form1: TForm1
Left = 148
Top = 187
Width = 544
Height = 356
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 16
Top = 8
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object Memo1: TMemo
Left = 40
Top = 112
Width = 425
Height = 217
Lines.Strings = (
'Memo1')
TabOrder = 1
end
end
тогда можно заменить методов find and replace.
Но большие dfm'ы delphi портит,
и превращает их во что-то бинарное,
(..IN наверно = BIN)
и едва-читабельное только в формате UTF-8:
�IN 0\x10`\x1 TPF0\x5TMain\x4Main\x3Tag\x2\x1\x4Left\x2��h\x3(\x3\x6Height\x3D\x2\xFAlphaBlendValue\x3Ơ\x7Caption\x6\x4Main\x5Color\x7 clSkyBlue
ParentFont \xEOldCreateOrder \x8Position\x7\xEpoScreenCenter\x7Visible \xBWindowState\x7\xBwsMaximized\x7OnClose\x7 FormClose\x8OnCreate\x7
FormCreate OnDestroy\x7\xBFormDestroy
PixelsPerInch\x2`
TextHeight\x2
\x6TBevel\x6Bevel2\x4Left\x3\x7F\x1\x3Top\x2)\x5Width\x2g\x6Height\x2& \x6TBevel\x6Bevel3\x4Left\x3O\x1\x3Top\x2R\x5Width\x3 \x6Height\x2& \x6TLabel\x7Label31\x4Left\x2 \x3Top\x27\x5Width\x2M\x6Height\x2
\x7Caption\x14\x18 Дата записи -> \x6TLabel\x7Label30\x4Left\x3· \x3Top\x27\x5Width\x2i\x6Height\x2
\x7Caption\x14" Дата поступления -> \x6TLabel\x7Label28\x4Left\x2 \x3Top\x2N\x5Width\x2\x4E\x4@\x40\x4=\x4=\x4>\x4A\x4B\x4L\x4 \x6TLabel\x7Label27\x4Left\x3힃Top\x2x\x5Width\x2s\x6Height\x2
\x7Caption\x14' Источник поступления \x6TLabel\x7Label34\x4Left\x2 \x3Top\x2x\x5Width\x3¯ \x6Height\x2
\x7Caption\x14; Материал и техника изготовления \x6TLabel\x6Label1\x4Left\x2 \x3Top\x2f\x5Width\x2\x1E\x6Height\x2
\x7Caption\x12\x5 \x10\x42\x4B\x4>\x4@\x4 \x6TLabel\x6Label2\x4Left\x2 \x3Top\x3 \x5Width\x2G\x6Height\x2
\x7Caption\x14\x17 Тип предмета \x6TLabel\x6Label3\x4Left\x2 \x3Top\x3à\x5Width\x2P\x6Height\x2
\x7Caption\x14\x19...............
Юрий Зотов (2004-07-27 16:33:00) [6]Обычно для этого пишется программа, которая парсит dfm, меняет в нем имя класса, убирает несовпадающие свойства и добавляет нужные.
Замену имени класса в файлах .pas можно сделать и уже готовыми программами (например, UltraEdit). А если свойства нового и старого классов полностью аналогичны, то и dfm тоже можно исправить уже готовой программой.