Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

Часто видел StringList с посторонними компонентами   Найти похожие ветки 

 
Delphi5.01 ©   (2006-05-06 13:12) [0]

Часто видел StringList с посторонними компонентами, типа кнопок и комбо боксов. В интернете набрел на несколько "оригинальных" решений, в них отрисовку приходиться делать самостоятельно. А нет ли варианта как с прогрес баром который можно поместить в статус бар просто указав его handle в нужный раздел (статус бара)?
Спасибо


 
Shirson ©   (2006-05-06 13:13) [1]

StringList? Или ListBox?

Нет, насколько знаю, совсем простого пути тутнет.


 
Delphi5.01 ©   (2006-05-06 13:31) [2]

Если честно мне вообще не так уж важно какой компонент буду использовать мне просто нужно что то вроде ListBox-а в котором каждая строка состоит из трех edit-ов и двух кнопок, возможно еще и combobox, думал создать свой компонент из вот этой группы (расположенных как нужно) и потом прикрепить к стоке listbox-а :-) типа мне лист бокс нужен для скроллинга, другими словами я все беру на себя, вот только скроллинг писать муторно :-)


 
Jeer ©   (2006-05-06 13:32) [3]

TStringList  - невизуальный.

Используй фреймы.


 
Delphi5.01 ©   (2006-05-06 14:00) [4]


> Jeer ©   (06.05.06 13:32) [3]
>
> TStringList  - невизуальный.
>
> Используй фреймы.

Я не совсем вас хорошо понял, что имелось в виду под термином "фреймы", Пожалуйста если можно пример или ссылку на документацию?


 
Jeer ©   (2006-05-06 14:14) [5]

TFrame

A frame (TFrame), like a form, is a container for other components. It uses the same ownership mechanism as forms for automatic instantiation and destruction of the components on it, and the same parent-child relationships for synchronization of component properties.

In some ways, however, a frame is more like a customized component than a form. Frames can be saved on the Component palette for easy reuse, and they can be nested within forms, other frames, or other container objects. After a frame is created and saved, it continues to function as a unit and to inherit changes from the components (including other frames) it contains. When a frame is embedded in another frame or form, it continues to inherit changes made to the frame from which it derives.

Frames are useful to organize groups of controls that are used in multiple places in your application. For example, if you have a bitmap that is used on multiple forms, you can put it in a frame and only one copy of that bitmap is included in the resources of your application. You could also describe a set of edit fields that are intended to edit a table with a frame and use that whenever you want to enter data into the table.


 
Delphi5.01 ©   (2006-05-06 18:31) [6]


> Jeer ©   (06.05.06 14:14) [5]
>
> TFrame
>
> A frame (TFrame), like a form, is a container for other
> components. It uses the same ownership mechanism as forms
> for automatic instantiation and destruction of the components
> on it, and the same parent-child relationships for synchronization
> of component properties.
>
> In some ways, however, a frame is more like a customized
> component than a form. Frames can be saved on the Component
> palette for easy reuse, and they can be nested within forms,
>  other frames, or other container objects. After a frame
> is created and saved, it continues to function as a unit
> and to inherit changes from the components (including other
> frames) it contains. When a frame is embedded in another
> frame or form, it continues to inherit changes made to the
> frame from which it derives.
>
> Frames are useful to organize groups of controls that are
> used in multiple places in your application. For example,
>  if you have a bitmap that is used on multiple forms, you
> can put it in a frame and only one copy of that bitmap is
> included in the resources of your application. You could
> also describe a set of edit fields that are intended to
> edit a table with a frame and use that whenever you want
> to enter data into the table.
>

А насколько реаьно фреим прикрепить к линк листу, и не совсем понял можно ли создавать несколько фреимов одновременно так что бы каждый из них имел независимые от друг друга компоненты (независимые значением)


 
Jeer ©   (2006-05-06 18:37) [7]


> к линк листу,


уточнить


> можно ли создавать несколько фреимов


можно

P.S.
Все это создается гораздо проще компонентов,  т.к. создается некоторая модель  локального пользовательского интерфейса из стандартных (имеющихся) компонентов.
Вдобавок - фреймы также легко помещаются на панель компонентов и их использование сводится к нажатию на иконку и размещение на форме.


 
КаМаз   (2006-05-06 23:43) [8]

Да че там StringList, я просто string видал


 
Delphi5.01 ©   (2006-05-06 23:58) [9]


> Jeer

Я не совсем с вами согласен, как я понял (помню из прошлого) фреими используются немного в других целях. Например если разрабатывается программное обеспечение для работы с базой данных то есть смысл на фреиме (выглядит как форма) разместить все компоненты TTable, TDataSource  и т.д. и тем самым сэкономить во времени и получить мобильность, так как данные компоненты повторяются почти что на каждой новой форме данного приложения, а форм в таких приложениях не мало.

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

Если вы работали с MS Access например, то там можно создать страничку так что бы все поля базы отображались в Edit-ах и Label-ах и вместо пролистывания между записями (таблицы) они все выведены в виде листа, разделенных линией. Таким образом получаем листинг, на подобие StringGrid но каждое поле (колонка) не просто ячейка а или Edit, Button, Combobox, Checkbox или еще что. Наверно теперь вы точно представили что я хочу замутить? :-)

Если что могу привести скриншот

Спасибо за время уделенное мне :-)

п.с. Меня устроит и любой компонент который поддерживает фишку скроллинга, ну наподобие панели. Типа если количество компонентов выходит за рамки панели что бы отображался скроллинг (и работал как скроллинг :-))


 
коректировка_вопроса   (2006-05-07 03:40) [10]

Только что сообразил что допустил ошибку в вопросе, вместо StringList я подразумевал ListBox. (писал наизусть, а с Дельфы уже больше года не работал, сменил язык и сферу деятельности)


 
Delphi5.01 ©   (2006-05-07 03:44) [11]


> Меня устроит и любой компонент который поддерживает фишку
> скроллинга, ну наподобие панели. Типа если количество компонентов
> выходит за рамки панели что бы отображался скроллинг (и
> работал как скроллинг :-))
TScrollBox


 
kaif ©   (2006-05-07 12:32) [12]

Если "строк" в таком "листбоксе" немного (20 - 50), то проще всего динамически (в цикле) создавать компоненты на ScrollBox (все сразу). Но если строк много, то нужен другой подход.


 
Delphi5.01 ©   (2006-05-07 13:03) [13]


> kaif ©   (07.05.06 12:32) [12]
>
> Если "строк" в таком "листбоксе" немного (20 - 50), то проще
> всего динамически (в цикле) создавать компоненты на ScrollBox
> (все сразу). Но если строк много, то нужен другой подход.
>

Ты прямо читаешь мои мысли :-) Вот именно это и пришло мне в голову, строк не много, макс будет 30 и то это при натяге а так в среднем рассчитываю на 15. Я думаю быстро создать компонент что бы можно было еще и в будущем воспользоваться.
Вот думаю о структуре, так как хочется что бы в компоненте была фишка которая позволит самому выбирать что за компоненты должны быть в строке :-) Кто знает когда еще понадобиться. Может есть идеи как это реализовать? На уровне алгоритма.
Просто не хочется пользоваться переменными типа Variant так как занимают очень много места, а как по другому можно сделать?


 
vidiv ©   (2006-05-07 19:23) [14]

та же проблема у меня - делаю вручную... в скроллбоксе сам позиционирую фреймы... использую фреймы.


 
Delphi5.01 ©   (2006-05-08 01:10) [15]


> vidiv ©   (07.05.06 19:23) [14]
>
> та же проблема у меня - делаю вручную... в скроллбоксе сам
> позиционирую фреймы... использую фреймы.
>


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

И как описать массив компонентов которые будут размешены на Panel-и, если брать динамический массив типа Variant он займет много объема, а по другому не вижу варианта сделать так что бы переменная была TButton, TEdit, TComboBox, TCheckBox или TLabel.

Что вы думаете? У вас есть идеи решения проблемы?

п.с. А можно узнать какой умник данную тему перенес в раздел "Прочее" где пользователи ведут треп, а не проблемы программирования решают? ИМХО это доказывает их не высокие познания в языке программирования Delphi.


 
vidiv ©   (2006-05-08 05:07) [16]


> И как описать массив компонентов которые будут размешены
> на Panel-и, если брать динамический массив типа Variant
> он займет много объема, а по другому не вижу варианта сделать
> так что бы переменная была TButton, TEdit, TComboBox, TCheckBox
> или TLabel.

Ну например так:
var ControlsList:array of TObject;
...
if ControlsList[x] is TButton then begin
 // кнопка
 (ControlsList[x] as TButton).Caption := ":)";
 //или
 TButton(ControlsList[x]).Caption := ":)";
end
else
if ControlList[x] is TEdit then begin
...
end...
а добавлять примерно так:
ControlsList[x] := TButton.Create(self);

все довольно просто :)


 
Delphi5.01 ©   (2006-05-08 10:52) [17]


> vidiv ©

Ты гений! Мне даже в голову не пришло воспользоваться типом TObject :-) А это так банально. Большое спасибо, уже начал кодить, как закончу выложу, может кому еще понадобиться.


 
Delphi5.01 ©   (2006-05-08 10:56) [18]

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



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.068 c
5-1132748649
DimaBR
2005-11-23 15:24
2006.06.04
Сохранение Published свойства


2-1147861873
13
2006-05-17 14:31
2006.06.04
построение графика


1-1145391209
Error27
2006-04-19 00:13
2006.06.04
При минимизации окна визуально пропадают некоторые элементы


2-1147970308
Freeek
2006-05-18 20:38
2006.06.04
поиск фрагмента текста


15-1147128713
Петр
2006-05-09 02:51
2006.06.04
Преобразование из StringGrid в DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский