Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как заменить 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 тоже можно исправить уже готовой программой.


Наверх

Титульная страница Поиск, карта сайта Написать письмо