Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Очень нужно чтобы переменная была "представителем формы"!

296
21 февраля 2008 года
Virtuoso
331 / / 31.07.2005
Visual Basic 6.0

Здравствуйте!
Дело у меня обстоит так. При определённых условиях у меня клонируется форма. И каждый раз с новой формой нужно проделывать одно и то же действие. Но действие не маленькое и поэтому не "красиво" писать для всех форм одну и ту же код-громадину.
Делаю так:
 
Код:
Z:
......ДЕЙСТВИЯ......
Select Case i
Case 1: Dim aF As New Form1: i = i + 1: GoTo Z
Case 2: Dim bF As New Form1: i = i + 1: GoTo Z
Case 3: Dim cF As New Form1: i = i + 1: GoTo Z
End Select

Поэтому нужно чтобы некая переменная "P" представляла каждый раз разнные формы (aF, bF, cF). Проще говоря, надо правильно осуществить действие: P = aF.
Помогите кто чем может)
Спасибо!
251
22 февраля 2008 года
SkyMаn
1.7K / / 31.07.2007
Нецелесообразно:
1. Клонировать форму таким способом не стоит.
2. Оператор GoTo - срочно забыть!

Выход ВСЕГДА есть без его использования.
Обьясните, пожалуйста, чего требуется добиться. На словах и кодом. Не жалейте примеров.
296
22 февраля 2008 года
Virtuoso
331 / / 31.07.2005
Цитата: SkyM@n
Обьясните, пожалуйста, чего требуется добиться. На словах и кодом. Не жалейте примеров.


Есть Форма "ODIN" и есть форма "DVA".
Из формы "ODIN" мне нужно программно располагать текст лэйблами (и изображения) на форме "DVA", т.е. заносить в лэйблы текст и менять соответственно их высоту на форме. (Просто таким образом я как бы создаю документ, который будет распечатываться :) ). Максимальный размер формы по вертикали - 15360 (что примерно равно высоте одного А4 листа), и все необходимые лэйблы с текстом могут не влезть. В связи с этим (я так думаю) нужно клонировать форму "DVA" и продолжить располагать текст уже на "клоне". И так пока не закончится текст.

Но конечно же (для красоты и чистоты кода) для всех этих потенциально клонированных форм код расстановки текста должен быть один. Но в нём надо универсальной переменной заменить любую из форм "DVA". Как я и говорил - клонировал и эта переменная стала "как бы ссылкой" на новую клонированную форму.
Вот такая замута)

Если никто на форуме мне не поможет, то мне придётся писать мега-ламерский супер-гигантский код на одних IF-ах и никому не говорить, что я так делал))

241
22 февраля 2008 года
Sanila_san
1.6K / / 07.06.2005
А не проще ли разобраться с печатью из RichTextBox (или как он в ВБ называется)? Зачем громоздить формы негуманной высоты, передавать туда что-то непонятное?
241
22 февраля 2008 года
Sanila_san
1.6K / / 07.06.2005
Кстати, по коду: не надо юзать Goto, достаточно определить функцию Z и вызывать её. Тогда код сразу станет ясным и понятным.
296
22 февраля 2008 года
Virtuoso
331 / / 31.07.2005
Ну это да. Я так и делаю. Я же пример написал. А с ричтекстбоксом может и проще, конечно, но это именно надо разбираться... Да я собственно придумал уже как можно сделать без клонирования форм. Но если кто сообразит как можно с помощью клонировая, то не будет бесполезным.

Я могу клонировать форму способом - Dim a As New Form1. Сказали, что таким способ не стоит клонировать формы. Почему и каким стоит?
И ещё... Если клонировать форму всё-таки таким способом, то вместе с формой клонируются объекты, являющиеся статичными (созданными сразу). А если я программно добавил какой-нибудь контрол, или изменил его параметры, это всё не копируется. Каким образом можно добиться копирования формы и всех контролов и их состояния на момент клонирования?
Спасибо!
241
23 февраля 2008 года
Sanila_san
1.6K / / 07.06.2005
Вообще, для понимания этого следует вдумчиво курить концепцию ООП. По чуществу вопроса могу сказать так: если разбираться особого желания нет, лучше сделать так: передавать любоым доступным способом параметры, которые позволяют клонировать базовую форму и на неё программно каждый раз делать что-то своё. В VB.NET это делается достаточно легко, как сделать это в VB6, я не знаю. Как вариант, можно создать какой-нибудь класс с методами генерации форм так, как надо, а потом вызывать эти методы. Однако, в VB6, насколько помню, нет перегрузки, поэтому методов таких будет много.

Кстати, зачем вообще клонировать форму?
296
23 февраля 2008 года
Virtuoso
331 / / 31.07.2005
Всё для того же... Для распечатывания. Хочу именно из формы, а не из ричтекстбокса "сделать документ". Да и вообще мало ли для чего может понадобиться. Я всегда неординарно подхожу к решению своих задач в программировании :) в силу своих небольших навыков в этом деле. Программирую для себя, поэтому изучать полностью язык нет нужды.
251
23 февраля 2008 года
SkyMаn
1.7K / / 31.07.2007
Для распечатывания? o_O А FastReports, CrystalReports уже не рулит?
Кстати, зачем было создавать две одинаковые темы?
296
23 февраля 2008 года
Virtuoso
331 / / 31.07.2005
Я просто владею VB на начальном уровне и многого не знаю. А темы не одинаковые. Тут спрашивается как можно переменной "заменить" имя формы, а во второй как вместе с формой клонировать все объекты на ней. Ладно, народ, спасибо за попытки помочь. Буду сам справляться с поставленной мной задачей, хоть и не очень удачной. Повторюсь - я программирую для себя и редко, и это в моей жизни не очень важно, поэтому подробно изучать язык нет нужды.
251
23 февраля 2008 года
SkyMаn
1.7K / / 31.07.2007
Так тем более, не усложняйте себе задачи. Системы отчетов есть уже готовые.
296
24 февраля 2008 года
Virtuoso
331 / / 31.07.2005
Что вы имеет ввиду под системами отчётов :) Для моего дела нет прог) Ладно. Давайте закроем тему
251
24 февраля 2008 года
SkyMаn
1.7K / / 31.07.2007
CrystalReports, FastReports и аналоги.
296
24 февраля 2008 года
Virtuoso
331 / / 31.07.2005
Ок) спасибо
241
26 февраля 2008 года
Sanila_san
1.6K / / 07.06.2005
Цитата: Virtuoso
Я просто владею VB на начальном уровне и многого не знаю.

ИМХО, лучше овладевать сразу VB.NET. Это как минимум интереснее. :)

Цитата: Virtuoso
Повторюсь - я программирую для себя и редко, и это в моей жизни не очень важно, поэтому подробно изучать язык нет нужды.

Ой, не знаю. По-моему, если что-то делать, то хорошо. Настолько хорошо, насколько можешь. Наверное, я перфекционист.

Цитата: Virtuoso
Хочу именно из формы, а не из ричтекстбокса "сделать документ". Да и вообще мало ли для чего может понадобиться.

Едва ли это может понадобиться хоть для чего-нибудь полезного, а даже если понадобится, то не сможет быть использовано, ибо решение нерасширяемое. Это всё равно, что забивать шурупы: получится довольно крепко, но напряжение в крепеже выше, поэтому будет ненадёжно. Шуруп подобает закручивать, а печатать подобает из текстового контрола.

Цитата: Virtuoso
Я всегда неординарно подхожу к решению своих задач в программировании в силу своих небольших навыков в этом деле.

ИМХО, лучше поступать не нетривиально, а оправданно; навыки же следует полировать и оттачивать. Таков Путь.:)

296
26 февраля 2008 года
Virtuoso
331 / / 31.07.2005
Цитата: Sanila_san
ИМХО, лучше овладевать сразу VB.NET. Это как минимум интереснее. :)
Ой, не знаю. По-моему, если что-то делать, то хорошо. Настолько хорошо, насколько можешь. Наверное, я перфекционист.Едва ли это может понадобиться хоть для чего-нибудь полезного, а даже если понадобится, то не сможет быть использовано, ибо решение нерасширяемое. Это всё равно, что забивать шурупы: получится довольно крепко, но напряжение в крепеже выше, поэтому будет ненадёжно. Шуруп подобает закручивать, а печатать подобает из текстового контрола.ИМХО, лучше поступать не нетривиально, а оправданно; навыки же следует полировать и оттачивать. Таков Путь.:)


:) При создании следующей программы в течение жизни встану на истинный путь :) И надо постараться хотя бы для приличия на VB 2005 перейти.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог