|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Добрый день! Пишу код - который обрабатывает множество элементов на форме - производит автоматическую их подгонку друг под друга, под разрешение экрана и т. д. Возникла необходимость обращения к определенным свойствам элементов. Например, в цикле Код: pascal 1. 2. 3. 4. 5.
и т. д. соответственно приходится писать процедуры, подобные тому, что ниже: Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
проблема в том, что процедур приходится писать много - одну для обращения к свойству Top, другую для обращения к Left, третью для обращения к Font.Name и т. д. процедур может быть несколько десятков, при этом 90% кода процедур фактически дублируется, а полезная функция только одна - получение нужного свойства. есть ли способ решить задачу по-нормальному (чтобы исключить повторяющийся код)? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 21:05 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7.
или Код: pascal 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 21:28 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 22:25 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
DimaBr Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
Спасибо, работает с Top. Но вот с Font.Size не работает. TControl(C).Font.Size := 8 выдает Undeclared identidier (font) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 23:34 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Наталья87 Код: pascal 1.
Во втором классе есть такая тема "Контрольное списывание" Цель урока: уметь каллиграфически правильно списывать текст с печатной основы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 23:46 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 23:49 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
DimaBr, Вообще говоря можно нарваться, когда какой-нибудь компонент объявит новое свойство Font ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 23:54 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Спасибо, раньше делала TLabel(component[i]).Font ... для всех типов компонентов было множество случайных багов вроде Access Violation в приложении Теперь даже "злой" менеджер памяти SafeMM для отлова багов в 2 раза меньше стал срабатывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 00:13 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
_Vasilisk_ DimaBr, Вообще говоря можно нарваться, когда какой-нибудь компонент объявит новое свойство Font Это проблема какого-нибудь компонента, а точнее его писателя. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 00:37 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
DimaBr Это проблема какого-нибудь компонента, а точнее его писателя. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 01:18 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Наталья87есть ли способ решить задачу по-нормальному (чтобы исключить повторяющийся код)? Надо включить мозг и найти у какого класса в дереве наследования нужное свойство было опубликовано впервые. Потом прочитать справку по оператору is . Тогда код сократится до Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Или даже более того: Код: sql 1.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 01:25 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
А вообще вменяемые люди для цикла по контролам использую TForm.Controls, а не Components. Это, конечно, если они извращенцы, которым не хватает Anchors. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 13:39 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Наталья87, я обычно смотрю, с какого класса появилось определенное свойство, и проверяю Код: pascal 1. 2. 3.
Можно внутри цикла проверять уже на конкретные классы и даже на конкретные контролы (TObject(Control [i]).[i]Equals (<мой_контрол>)) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 15:21 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Док, я тебе открою маленький секрет: в массиве Controls есть только наследники от TControl, это обеспечивается его объявлением. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 15:27 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Дим, ты, как всегда, изъясняешься мудро и потому непонятно. Поэтому, я не буду воспринимать это, как желание меня обидеть ;) А вообще, в Лазаре с его анкорингом и макетированием на этот счет намного проще https://wiki.lazarus.freepascal.org/Autosize_/_Layout ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 15:56 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
ДокПоэтому, я не буду воспринимать это, как желание меня обидеть ;) А зря. Базовые принципы языка - объектная модель - наследование. Переменная типа класса-предка может содержать значения только этого класса или любого его наследника. TForm.Controls объявлено как массив TControl, соответственно в нём не может быть ничего, кроме наследников TControl и Controls[i].InheritsFrom(TControl) по определению true. (Хотя, конечно, свои Control ты мог по глупости объявить как угодно.) Кроме того, InheritsFrom в данном случае совершенно равнозначно оператору is и существует исключительно для совместимости с С++, где такого оператора нет. Топикстартерша - дура со ста тысячами строк говнокода. Не бери с неё пример. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 16:15 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov TControl, соответственно в нём не может быть ничего, кроме наследников TControl и Controls[i].InheritsFrom(TControl) по определению true. а, вот ты о чем? Да, ты прав. Но мой пример только для демонстрации возможностей. Но в данном случае, конечно, говнокод :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 16:33 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Кроме того, InheritsFrom в данном случае совершенно равнозначно оператору is и существует исключительно для совместимости с С++, Код: pascal 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 16:40 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
"Данный случай" покрывает только TObject, а не TClass. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 16:46 |
|
Обращение к свойствам (Top,Left итд) заранее неопределенного класса (TLabel, TButton итд)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov "Данный случай" покрывает только TObject, а не TClass. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 16:51 |
|
|
start [/forum/topic.php?fid=58&gotonew=1&tid=2036621]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
7ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 154ms |
0 / 0 |