|
|
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Задача такова: Имеется DFM-файл-файл стандартной структуры Delphi, и в него нужно записать строку в виде "OnClick = NewForm1Click" перед словом "end". Как это сделать? Образец DFM-ФАЙЛ-файла: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 23:57 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DefineProperty ? Как добавить в поток эту строку?, при чем эта строка должна относиться к этому объекту.....? Отесать если там Memo или ListBox, то строка должна относиться к его описанию, перед словом end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:26 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
У меня есть процедура для очистки строки DFM-файл... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Но как ее присвоить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:32 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Осталось 1:12 Как вписать в DFM-файл -файл эту строку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:35 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Если не пить пиво и не гулять по-девочкам, то мозг начинает работать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:38 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Вы не должны заниматься сериализацией компонентов. Компоненты это умеют делать сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:39 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, Дима, это делается не по средствам среды. Как Делфи добавляет ссылку на обработчик событий в DFM-файл файл ,- "OnClick = NewForm1Click" , при чем добавляет ее в нужное место для нуд6ого компонента. Вам ведь известен мой проект?, да, он вам известен. Готовность 90%. Остался маленький обработчик событий, код которого , будет общим... Короче , как мне вписать эту строку в DFM-файл ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:45 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, Не умеют,!!! Или не полностью. Почему тогда, при сохранении формы в поток со всеми его свойствами, - все сохраняется за исключением событий - методов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:47 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Сериализацией объектов занимается TWriter/TReader Бессмысленно придумывать собственный механизм, если уже таковой есть. Сначала придумайте как прочитать событие и показать его в дизайнере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:51 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Linux_64Почему тогда, при сохранении формы в поток со всеми его свойствами, - все сохраняется за исключением событий - методов ? Если события есть (назначены) и не сохраняются, то что мешает поставить бряку и посмотреть почему это происходит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 00:53 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, да, мой код не идеален. Над оригиналом трудились с десяток профи, А я всего лишь любитель... Возможна ли альтернатива? Я компилировал файл Unit1.pas с Unit1.dfm, предварительно внеся в файл DFM-файл строку со ссылкой (указателем на метод) "OnClick = NewForm1Click" и после этого компилировал весь проект, в итоге обработчик события , а он прописан в pas-файле срабатывал, но эту строку я вносил вручную в DFM-файл-файл. Как мне это а№томотизировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:06 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Как автоматизировать ? А как ваш инспектор отображает события ?Где эти события у вас хранятся ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:10 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Мне просто нужно перед компиляцией внести нужную строку в нужное место, как правило перед end. Если это не только дерево TreeView, там сложнее, Если я добавил обработчик OnChahge для Мемо или OnClick для кнопки, то соответствующее описание попадает в DFM-файл, при чем обратите внимание!!!, перед словом end, нужного объекта, которому присваивается ссылка на обработчик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:14 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Повторяю, компоненты сами знают как себя сохранить. Не нужно это делать снаружи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:17 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Linux_64, в инспекторе присваивается ссылка - указатель на метод, если ссылка отсутствует, то присваивается свойству значение nil, в противном случае указывается адрес указателя, по сути это просто строка с адресом, она не привязывает обработчик к ссылке, а вот сама среда Делфи это делает посредством DFM-файл файла и определенной строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:18 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
А если метода ещё нет. Его только создали в дизайнере (в текстовом виде), куда указывает ссылка ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:20 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, Отлично!, но где тогда строка "OnClick = NewForm1Click", перед словом end? - именно она указывает на связь между скажем кнопкой и обработчиком в коде модуля pas. Кнопка не знает, что ей присвоен указатель и что обработчик содержит кучу строк кода при нажатии на эту кнопку, нет привязки, нет ссылки на этот обработчик, нет ярлыка если хотите, но где моя строка в FFM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:23 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Откуда вообще берутся ссылки на метод, если у вас ДВА текстовых файла ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:24 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, Дмитрий, я понятия не имею, как разработчики Боллэнд это сделали. Мне удалось выяснить, что строка "Button1Click" в инспекторе объектов это всего лишь строка для пользователя и флаг того, что ссылка создана , ссылка на обработчик Procedure TForm1.Button1Click.... Так вот, строка Button1Click каким то образом попадает в DFM-файл файл. Элли события это тоже свойства компонента, то почему ее нет в файле?, там сохраняются только свойства не имеющие значения по- умолчанию... мы можем обмануть судьбу и решить задачу не так как это сделала Борлэнд ? . Как добавить строку в DFM-файл перед словом end, при условии, что она будет относиться к "своему" объекту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:32 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
DimaBr, в смысле ?, какие два текстовых файла? - DFM файл и pas , что ещё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:35 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Вы похоже меня не слышите. Вы в дизайнере кликаете на кнопке, при этом в коде создаётся процедура, а в инспекторе показывается что на событие OnClick привязана процедура ButtonClick. До сохранения ещё далеко. У вас это работает ? Откуда в вашей NewForm1.OnClick = 004ECE40 ? Это что за адрес ? У вас есть DFM файл, вы его прочитали (каким то образом). Откуда взялся адрес процедуры ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:38 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Linux_64, О Боги.... Код: pascal 1. 2. 3. 4. 5. 6. Посредством этого кода я присваиваю указатель на метод события OnDblClick, но В файл сохраняются все свойства , которые я изменил или не трогал, но абсолютно нет намёка на событие.... где оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:42 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
То есть вы копилируете форму, создаёте её и получаете указатель на метод ? А новый метод, который вы ручками напишите в коде, где указатель на него ? Он существует только в текстовом виде, в скомпилированной форме его нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:46 |
|
||
|
Сериализация DFM-файл файла
|
|||
|---|---|---|---|
|
#18+
Linux_64, Да, у меня это работает, создаётся обработчик событий в редакторе кода со всеми параметрами, без проблем, так же эта строка с именем процедуры прпадает в описание класса формы, так же как это делает обычная Делфи. Хвала Богу, я додумался как в нужную строку редактора прописывать нужный обработчик со всеми его параметрами. Тем временем , в Инспектор объектов присутствует адрес указателя или виде строки, я могу это переключить в настройках инспектора. Дело все в том, что это просто строка с адресом . Когда в оригинале создаётся событие, то во первых создаётся обработчик в коде, при чем обратите внимание, это происходит перед конечным словом end. Добавляется строка-описание в класс формы, короче в раздел интерфейса, в инспектор д*бавляется строка с именем метода, но это всего лишь строка и наконец в DFM-файл - файл добавляется строчка типа OnClick = Button1Click ..... ???? Как ее добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 01:52 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39868235&tid=2039003]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
144ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 481ms |

| 0 / 0 |
