ListBox

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

ListBox

Сообщение папа Карло »

по клику на контрое А рисуется на нем листбокс, при этом получается так, что этот листбокс "отрезается" границей контрола А. как сделать так чтобы не отрезался? например если вы повесите комбобокс на край диалога и потом его раскроете то он раскроется за границу окна, как такогоже поведения добиться от листбокса?
Последний раз редактировалось папа Карло 15 сен 2003, 07:21, всего редактировалось 1 раз.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Папа Карло, известно как.

Если в VC++ с MFC, то только "руками". При этом я бы на написал, наверное, свой класс, некий комбинированный CListBoxТвойКонтрол.
Наследовать такой класс думаю, надо от твоего "контрола", CListBox - агрегировать, вернее, указатель на него.
Впрочем, можно так и сяк. В инете полно инфы по контролам. Но руками придётся в любом случае. Хотя ничего страшного в этом и нет.

Если в билде или дельфах, то я бы положил и контрол и TListBox на отдельную панельку (TPanel), "привязав" их соответвенно при помощи пропертей - анкер. А дальше только управлял бы только видимостью листбокса в зависимости от нажатия на контрол.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Да, и ты определись, что у тебя литбокс или листвью :wink:
Аватара пользователя
Marmot
Графоман
Сообщения: 39274
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

Он это не поймёт, папа у нас дотнеттчик... :-)

ЗЫ, Папа, учись правильно вопросы задавать
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Re: ListView

Сообщение Циник »

Ну и вопросы ты задаешь, товарищ Карло. Прямо как Олеся про самолет :twisted:
Видно, GUIнёй ты маешься редко и нерегулярно :twisted:

Ну, давай попробуем разобраться.
папа Карло писал(а):по клику на контрое А рисуется на нем листбокс, при этом получается так, что этот листбокс "отрезается" границей контрола А.
Какой границей - правой, нижней, еще какой-нибудь?
папа Карло писал(а):как сделать так чтобы не отрезался?
Расположить его в нужном месте, с запасом, учитывая его размеры. Математика элементарная - два действия :twisted:
Или что-то иное нужно?
папа Карло писал(а):например если вы повесите комбобокс на край диалога и потом его раскроете то он раскроется за границу окна, как такогоже поведения добиться от листбокса?
Такого же - никак. Это два разных контрола :twisted:
У комбобокса раскрывается выпадающий список, который представляет из себя отдельное окно. У листбокса нечему выпадать и раскрываться.

К тому же, основное окно комбобокса (которое нераскрытое) точно так же уйдет за край окна-родителя, как и окно листбокса, если расположить его у края, без запаса. В этом плане поведение этих двух контролов абсолютно одинаково.
vg писал(а):я бы положил и контрол и TListBox на отдельную панельку (TPanel), "привязав" их соответвенно при помощи пропертей - анкер. А дальше только управлял бы только видимостью листбокса в зависимости от нажатия на контрол.
Это в общем случае глубоко порочный подход, товарищ - создать все, что может когда-нибудь понабиться, заранее, и держать до поры до времени невидимым. Это, товарищ, двойка на экзамене по гуёвому дизайну. Ну, или тройка, если на дополнительный вопрос ответишь. Но то, что без стипендии останешься - это точно :twisted:
vg писал(а):Да, и ты определись, что у тебя литбокс или листвью
А он разве не определился? Прямо ведь так и говорит - листбокс.
Тьфу ты, на топик-то я и не посмотрел. И правда не определился. Однако что бокс, что вью - все вышесказанное остается в силе.
Последний раз редактировалось Циник 14 сен 2003, 23:03, всего редактировалось 2 раза.
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Сообщение Циник »

Marmot писал(а):Он это не поймёт, папа у нас дотнеттчик... :-)

ЗЫ, Папа, учись правильно вопросы задавать
Во-во.
Правильно заданный вопрос - половина ответа.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Циник,
Ну и вопросы ты задаешь, товарищ Карло. Прямо как Олеся про самолет
Видно, GUIнёй ты маешься редко и нерегулярно

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

папа Карло:
как сделать так чтобы не отрезался?
Расположить его в нужном месте, с запасом, учитывая его размеры. Математика элементарная - два действия
Или что-то иное нужно?
Нет не элементарная, если чел только начинает, как ты говоришь"гуить". Не элементарная, т.к. надо не то чтобы знать, а иметь практические навыки использовать те или другие архитектуры, библиотеки и т.д. Для начала челу в твоей "элементарной" математике нужно уметь получать координаты оконных объектов и знать как их изменять. Если не для начала, то, Циник, необходимо уметь это делать не как попало, а в общем консепсьоне построения приложения, если хочешь архитектуры.
папа Карло:
например если вы повесите комбобокс на край диалога и потом его раскроете то он раскроется за границу окна, как такогоже поведения добиться от листбокса?

Такого же - никак. Это два разных контрола
У комбобокса раскрывается выпадающий список, который представляет из себя отдельное окно. У листбокса нечему выпадать и раскрываться.
"Такого же - никак". Ты забыл добавить здесь имхо. Т.е. что для тебя никак. Любой программер с квалификацией ниже средней использует классы объектов-контролов только в качестве базовых в VC. Непосредственно это барахло, например, MFC никто не использует. Пишут свои классы на основе базовых решений мелкософта, или используют классы других. Это так, поскольку программерам почти всегда необходимо поведение контролов, которое не предусмотрено разработчиками мелкософта. Не предусмотренно не потому, что в мелкософте дураки, а потому, что они дают базовые решения, базовые классы.

vg:
я бы положил и контрол и TListBox на отдельную панельку (TPanel), "привязав" их соответвенно при помощи пропертей - анкер. А дальше только управлял бы только видимостью листбокса в зависимости от нажатия на контрол.

Это в общем случае глубоко порочный подход, товарищ - держать создать все, что может когда-нибудь понабиться, заранее, и держать до поры до времени невидимым. Это, товарищ, двойка на экзамене по гуёвому дизайну. Ну, или тройка, если на дополнительный вопрос ответишь. Но то, что без стипендии останешься - это точно
Мне твои оценки здесь ни к чему. Чел может сделать это в динамике, если ему эффективности захочется. Есль ключевое слово new. Слыхал про такое?

vg:
Да, и ты определись, что у тебя литбокс или листвью
А он разве не определился? Прямо ведь так и говорит - листбокс.
Читай тему топика - там ListView
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2Циник

Тьфу ты, забыл ещё уколоть.
Тьфу ты, на топик-то я и не посмотрел. И правда не определился. Однако что бокс, что вью - все вышесказанное остается в силе.
Бокс и вью - это разные весчи. Например, CListView - это совсем даже и не контрол. Это класс представления приложений архитектуры документ/вид классов MFC.
Тщательнее надо быть, товарищЬ, когда учите других.
Что скажите?

PS. (это редакция) А я не понял, чё мы вообще завелись? Ладно пойду домой пить валерьянку.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

да GUI я занимаюсь лчень редко, не моя область. :) мне надо отрисовывать произвольный контрол за границу парент контрола, на важно вправо, мниз или вверх. так понятно? :) сейчас надо листбокс отрисовать, завтра тривью. :)
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Папа Карло,
Было и так понятно, что ты хочешь с самого начала. Про листвью и бох - это я так, по приколу.
В целом, как мне кажется, ты идешь правильной дорожкой, когда пытаешься найти общие подходы решения, казалось бы, частной задачи. Важно здесь только не переусердствовать. Иногда частное решение бывает полезнее общего (в реальных проектах программистов).

Я не знаю шарп, поэтому и не могу подсказать тебе что-либо толковое. По началу я думал, что ты рисуешь на С++. Но вот такой вопрос... Создание контролов для программистов VC++ - это как здрасьте, т.к. мелкософт говорит - ДОделыйте всё сами. И это правильно. Но как я понимаю, в шарпе (вернее в System.Windows.Forms) практически всё уже есть в части GUI. Практически "набор" классов не меньше чем в борланде? Я могу сильно ошибаться, но может лучшим решением для "нестандартных" контролов является создание их в С++, а затем использование их (как активХ) в шарпе?
да GUI я занимаюсь лчень редко, не моя область.
А ты считаешь, что есть предметные специалисты гуи?
Я таких не знаю. Не знаю, как у вас там в Америках, а здесь, в России, чтобы зарабатывать приходится делать всё самому, даже пачкорды юзерам втыкать и вытыкать из розеток и при этом наблюдать их недовольные рожи.
Так, что ничего не поделаешь, как бы неприятно это тебе ни было. Придётся тебе постоянно заниматься гуи, если ты хочешь то, о чём пишешь.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

специалистов по ГУИ я знаю. собственно как и специалистов других областей :) писать это на си++ или на шарпе пофиг, я могу перевести с любого языка. мне исходник надо. сейчас докопано до того, что этот листбокс создается как чайлдвиндов, а его надо делать видимо ПОПАПом.... и если его сделать таковым, то все наврное получится....
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Сообщение Циник »

vg писал(а):Так ты помоги челу, а не хлопай его отечески по плечу
А я что делаю, товарищ? Внимательнее читаем тексты собеседников, вдумчивее, доходим до сути.

vg писал(а):
Математика элементарная - два действия
Или что-то иное нужно?
Нет не элементарная, если чел только начинает, как ты говоришь"гуить". Не элементарная, т.к. надо не то чтобы знать, а иметь практические навыки использовать те или другие архитектуры, библиотеки и т.д.
Это уже не математика, товарищ.
Математика - элементарная.
vg писал(а):Не элементарная, т.к. надо не то чтобы знать, а иметь практические навыки использовать те или другие архитектуры, библиотеки и т.д. Для начала челу в твоей "элементарной" математике нужно уметь получать координаты оконных объектов и знать как их изменять. Если не для начала, то, Циник, необходимо уметь это делать не как попало, а в общем консепсьоне построения приложения, если хочешь архитектуры.
“О друг мой, Аркадий Николаич! Об одном прошу тебя: не говори красиво”
vg писал(а):"Такого же - никак". Ты забыл добавить здесь имхо.
Ну почему же - сознательно не добавил, товарищ.
vg писал(а):Т.е. что для тебя никак.
И для меня, и для тебя, и для папы римского.
vg писал(а):Любой программер с квалификацией ниже средней использует классы объектов-контролов только в качестве базовых в VC. Непосредственно это барахло, например, MFC никто не использует. Пишут свои классы на основе базовых решений мелкософта, или используют классы других. Это так, поскольку программерам почти всегда необходимо поведение контролов, которое не предусмотрено разработчиками мелкософта. Не предусмотренно не потому, что в мелкософте дураки, а потому, что они дают базовые решения, базовые классы.
С этим - к Лепсику, товарищ :twisted:
vg писал(а):Мне твои оценки здесь ни к чему.
Ты перепутал, товарищ - я обращался к читателям, а не к тебе лично. Есть такой стилистичский прием, употребительный в риторике - обобщенное второе лицо называется.
vg писал(а):Чел может сделать это в динамике, если ему эффективности захочется. Есль ключевое слово new. Слыхал про такое?
Хорошо излагаешь, товарищ! :twisted:
vg писал(а):vg:
Да, и ты определись, что у тебя литбокс или листвью
А он разве не определился? Прямо ведь так и говорит - листбокс.

Читай тему топика - там ListView
После торможения, товарищ, не забываем своевременно сниматься с ручника :twisted:
vg писал(а):Тьфу ты, забыл ещё уколоть.
Не суетись, товарищ. Тебя уже мелом посыпали? :twisted:
vg писал(а):
Однако что бокс, что вью - все вышесказанное остается в силе.
Бокс и вью - это разные весчи. Например, CListView - это совсем даже и не контрол. Это класс представления приложений архитектуры документ/вид классов MFC.
А в Киеве, oчевидно, дядька, товарищ.
Но даже если его фамилия Листвьюк, к предмету разговора это имеет весьма опосредованное отношение.
Ибо предмет этот - ListBox Control, как недвусмысленно указывал товарищ Карло. Который ведет себя (контрол, а не папа Карло) в части выпадания и незалезания точно так же, как и ListView Control. Eсли ты в данный момент чуть поднимешь глаза, товарищ, то увидишь, что, собственно, именно это я и утверждал ранее. Более лаконично, впрочем. Но это уж не моя вина :twisted:
vg писал(а):Тщательнее надо быть, товарищЬ, когда учите других.
Еще тщательнее? :twisted:
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Сообщение Циник »

папа Карло писал(а):мне надо отрисовывать произвольный контрол за границу парент контрола, на важно вправо, вниз или вверх. так понятно? :) сейчас надо листбокс отрисовать, завтра тривью. :)
Да все понятно, товарищ Карло.
Тут нужно сперва уяснить тебе, что за свои пределы родительский контрол никого не выпускает, по определению. Именно для этого, в частности, его и придумали. Если нужно, чтобы один контрол выходил за границу другого, они не должны состоять в родительских отношениях. Рисуй его самого по себе, без явного парента, и располагай где хочешь. Понятно уже или еще вопросы остаются? Если последнее, то давай их сюда.
папа Карло писал(а):специалистов по ГУИ я знаю. собственно как и специалистов других областей :) писать это на си++ или на шарпе пофиг, я могу перевести с любого языка.
Узнаю брата Колю! :twisted:
папа Карло писал(а):мне исходник надо. сейчас докопано до того, что этот листбокс создается как чайлдвиндов, а его надо делать видимо ПОПАПом.... и если его сделать таковым, то все наврное получится....
Ну... да, примерно так, товарищ. См. выше.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Да циник, я попробовал проанализировать терминологию, которую ты используешь. Теперь мне всё ясно.
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Сообщение Циник »

vg писал(а):Да циник, я попробовал проанализировать терминологию, которую ты используешь. Теперь мне всё ясно.
Ну, давай рассказывай тогда, раз все ясно :twisted:

P.S. Жеманничать - некрасиво, товарищ.
Ответить