0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 57
|
||||||||||||||||
1 | ||||||||||||||||
Delphi 6-7 Передача в процедуру любого визуального объекта через одну переменную06.02.2019, 02:05. Показов 5394. Ответов 84
Написал небольшую прогу и заморочился с полным ресайзом всех объектв и шрифтов на форме при резайзе самой формы. Написал, работает, но процедура ресайза просто ГИГАНСКАЯ и не умещается в экран и постоянно в ней одно и тоже, типа этого:
Попытался написать доп. процедуру чтобы было типа:
Чтобы в процедуру и "кнопку" и "панель" и "метку" передать можно было и не расписывать по 7 строк для каждого предполагаемого типа. Заранее ГРОМАДНОЕ СПАСИБО! P.S. Если у кого есть и другие мысли, методы, способы по полному ресайзу всех объектов на форме при ресайзе самой формы, очень буду признателен за инфу, почитаю, изучу обязательно. Даже если они вообще с другим подходом. Чтоб форма как картинка больше-меньше, а всё на месте осталось и с нужными пропорциями. Спасибо, спасибо!
0
|
06.02.2019, 02:05 | |
Ответы с готовыми решениями:
84
Передача любого объекта в метод Передача любого объекта в виде параметра функции в отдельный класс Передача объекта в процедуру Передача в процедуру одну стрчоку из двумерного массива |
пофигист широкого профиля
4739 / 3172 / 860
Регистрация: 15.07.2013
Сообщений: 18,281
|
|
06.02.2019, 03:14 | 2 |
1
|
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 57
|
||||||
06.02.2019, 04:03 [ТС] | 3 | |||||
northener, Гениально! "Краткость сестра таланта"! Спасибище!
Извиняюсь за наглость, но можно так же чтоб и размер шрифта так же красиво прокатил? Шрифт не пролазит... :-( Но всё равно уже гораздо-гораздо лаконичней получается!
Я конечно подозреваю что фиг, но надежда...
0
|
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
|
|
06.02.2019, 04:27 | 4 |
1
|
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 57
|
|
06.02.2019, 05:34 [ТС] | 5 |
Nanotentacle, Спасибо! Очень интересная статья. И та что в ней в конце указана тоже.
Изучил, впитал, прочувствовал. И сразу засада... В семёрке вместо AlignWithMargins, Margins и Padding "писюлька" такая,.. громадная... :-( Блин, я вот даже разочарован, неужели в Делфи нет такого как в HTML чтоб в процентах ширину и отступы указал, всё, без всяких постоянных пересчётов - автоматом. У меня автоформат формы в несколько раз больше кода чем сама прога, это ж блин... слов нет. А на счёт Margins и т. д. в конкретном данном случае не подходит, надо чтобы и отступы от краёв тоже менялись, абсолютно всё менялось. Как резиновая, вместе с шрифтами тоже. Например Ширина формы 1000 пикселей, отступ левый 10, Ширина кнопки 50, вот чтоб при ширине формы 100 стало - отступ 1, ширина кнопки 5. Ну я так, образно, до 100 пикселей там конечно тянуть никто не даст, просто для примера. Ну мне осталось размер шрифта как-то протащить "контрабандно" в процедуру, любыми путями и цель достигнута. Я уже думал может тупо стрингом название объекта в процедуру протащить, а потом типа по факту FindComponent и поехали, так хренушки, все равно тип требует, падлюка. Не прокатило... Мышку скоро покусаю! :-)
0
|
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
|
||||||
06.02.2019, 05:42 | 6 | |||||
Сообщение было отмечено klass2323 как решение
Решение
Ну общий предок у TLabel и TPanel один - это TControl. Соответственно, с этим будет сложно. Но есть одна хитрость. Можно в процедуру передавать не только ссылку на сам компонент, но и ссылку на TFont, например (а если его нет, то просто Nil). А внутри процедуры проверять:
0
|
Модератор
|
||||||
06.02.2019, 05:59 | 7 | |||||
Сообщение было отмечено klass2323 как решение
Решение
Можно, конечно, вот так "обмануть"...
0
|
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 57
|
|
06.02.2019, 09:56 [ТС] | 10 |
Nanotentacle, Слушайте, а ничего так способ, слегка "черезжопно" наверно выглядит, ну да и хрен с ним! :-)
Главная ведь цель достигнута, избавиться от последней лишней строчки! Думаю наверно так и сделаю. На читабельность проги это никак не влияет! Спасибо!!! Про оверлоад я нихрена к сожалению не знаю, только что прочитал, примеры посмотрел, но нифига пока не въехал. Но я спал очень давно, может посплю, въеду... Спасибо за все подсказки!
0
|
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
|
|
06.02.2019, 10:06 | 11 |
Все просто. Overload позволяет создавать процедуры/функции (причем, могут быть и процедуры с функциями вместе) с одинаковым названием но разным набором параметров. В результате, в вашем случае можно было сделать еще одну процедуру с таким же названием, добавив в параметры AFont, и исправить вызов процедур только там, где компонент имеет текстовое поле. А компилятор сам разберется какие процедуры ему вызывать исходя из набора параметров.
0
|
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 57
|
|
06.02.2019, 10:10 [ТС] | 12 |
D1973, Поразительно! Ваше "заклинание" работает! Я правда не особо понял как оно работает, но работает. Я проверил! Портал прям какой-то. Мне кажется до меня эти классы доходить начали частично. Правда "проперти" всякие и "паблик" "не паблик" - ХЗ куда его тулить.
Я конечно всё больше понимаю, что я нифига не понимаю из того, что должен. Ну потому я и здесь... Спасибо Вам БОЛЬШОЕ, за такой интересный способ, прям не знаю как к нему и относиться. Прикольно, но пока не понимаю, а хотелось бы...
0
|
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 57
|
|
06.02.2019, 10:27 [ТС] | 14 |
Verevkin, Грешно смеяться над убогими! А если серьёзно: Что это за среда такая? У меня наверно только половина из всего что у Вас есть! И вот этого "TGridPanel" точно нету...
Нельзя его как нибудь скачать отдельно? За подсказку спасибо!
0
|
Модератор
|
|
06.02.2019, 10:36 | 16 |
Да просто... У класса TControl свойство Font на самом-то деле есть, просто запрятано оно от посторонних глаз в секции protected. Вот и вытащили мы его наружу, унаследовавшись от этого самого TControl и поместив это свойство в секцию public.
Наследники - они такие: все, что предок в кубышку складывал - они сразу разбазарить готовы...
0
|
Заблокирован
|
|
06.02.2019, 11:00 | 20 |
0
|
06.02.2019, 11:00 | |
06.02.2019, 11:00 | |
Помогаю со студенческими работами здесь
20
Выразить одну переменную через другую Вывод ряда фибоначчи через одну переменную Доступ к свойству объекта через переменную Вызов объекта через строковую переменную Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |