Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.183.187] |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
ПРИВЕТ Всем !!!
на form'e 2-ва ComboBox в 1. показывается название во 2. показывается код (названия) как сделать так чтобы: они грузились из файла, и соответствовали друг другу (название = коду (вводишь одно показывалось второе)). и при необходимости можно было ввести новый код и название (сохранить в этом файле). |
Сообщ.
#2
,
|
|
|
Возможно имеется ввиду TValueListEditor на вкладке Additional (CB6) ?
|
Сообщ.
#3
,
|
|
|
???? сейчас гляну...
|
Сообщ.
#4
,
|
|
|
ItemIndex-Не пробовал использовать для согласования
ComboBox1->ItemIndex=ComboBox2->ItemIndex; В событии Change |
Сообщ.
#5
,
|
|
|
Вот про TValueListEditor, я совсем недавно писал.
Компонент этот появился с C++Builder6. Находится на вкладке Additional. Он служит для редактирования списка вида "имя = значение". Например, пользователю требуется для работы программы задать несколько переменных, можно его использовать - в первой колонке будет имя, во второй - вводимое пользователем значение. Надписи на заголовках задаются в свойстве TitleCaptions. По умолчанию - "Key \n Value". Сами данные в свойстве Strings, имеющее тип TStrings. Встроенный редактор этого свойства позволяет все визуально спроектировать. Во время выполнения к ключам и значениям можно добраться через Keys и Values или Cells. Во время выполнения, если разрешено редактирование, пользователь сам может изменять значения, и даже добавлять и удалять (естественно, если такой режим включен). Свойство KeyOptions определяет, какие операции доступны пользователю (во время выполнения) при редактировании колонки имен. Это keyEdit (редактирование имен), keyAdd (добавление новых строк), keyDelete (удаление строк), keyUnique (имена не могут повторяться). Свойство ItemProps позволяет установить параметры редактирования каждого из элементов списка. Это массив, каждый его элемент - типа TItemProp. Он имеет ряд свойств, применимых к каждому элементу: EditMask (маска ввода, так же как и у MaskEdit, как ей пользоваться - здесь: http://bcb-faq.pochta.ru/094.html), EditStyle (стиль редактирования (esSimple (обычное редактирование), esEllipsis (кнопка с многоточием, при нажатии на нее - событие OnEditButtonClick, где можно показывать, например, специальную форму для редактирования значения), esPickList (выпадающий список, для его формирования - OnGetPickList))), ReadOnly (можно ли пользователю изменять значение в самом окне), MaxLength (максимально допустимая длина вводимых символов). Свойства TValueListEditor DisplayOptions и просто Options регулируют различные параметы поведения и отображения. |
Сообщ.
#6
,
|
|
|
Примерно так:
... #include "IniFiles.hpp" ... //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { // загружаем Combobox'ы из файла bin\pathname.dat TIniFile* ini = new TIniFile(ExtractFilePath(Application->ExeName) + "pathname.dat"); TStringList* Titles = new TStringList; TStringList* Path = new TStringList; ini->ReadSectionValues("TITLE", Titles); ini->ReadSectionValues("PATH", Path); for(int i=0; i<Titles->Count; ++i) { ComboBox1->Items->Add(Titles->Values["FileTitle"+IntToStr(i)]); } for(int i=0; i<Path->Count; i++) { ComboBox2->Items->Add(Path->Values["FilePath"+IntToStr(i)]); } ComboBox1->ItemIndex = 0; ComboBox2->ItemIndex=ComboBox1->ItemIndex; delete Titles; delete Path; delete ini; } //--------------------------------------------------------------------------- void __fastcall TForm1::ComboBox1Select(TObject *Sender) { ComboBox2->ItemIndex=ComboBox1->ItemIndex; } //--------------------------------------------------------------------------- void __fastcall TForm1::ComboBox2Select(TObject *Sender) { ComboBox1->ItemIndex=ComboBox2->ItemIndex; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TStringList * List = new TStringList; int f = ComboBox2->ItemIndex; // строка ComboBox'a AnsiString lf = ComboBox2->Items->Strings[f]; // файл, который будем грузить ListBox1->Clear(); List->LoadFromFile(lf); // загружаем в TStringList строки из файла { for(int i=0;i<List->Count;i++) // бежим по всем строкам ListBox1->Items->Add(List->Strings[i]); // тогда добавляем в ListBox List->Clear(); delete List; } } //--------------------------------------------------------------------------- Не проверял! © trainer |
Сообщ.
#7
,
|
|
|
OLD
при вводе значения и нажатия Button1 выдает cannot open file !!! KAV СПАСИБО понял, но как добавить значения в файл... Bas спасибо вроде работает ComboBox1->ItemIndex=ComboBox2->ItemIndex; |
Сообщ.
#8
,
|
|
|
Для загрузки из файла я бы посоветовал тебе использовать TStringList , а, зная свой формат хранения данных, ты легко "расщепишь" каждую строку на составные и добавишь в ComboBox'ы (кстати, тут топик рядом с такой же почти задачей, я там даже код привел). Сохранять в файл - опять же считывать эти значения с КомбоБоксов, на этот раз формировать СтрингЛист и писать его в файл. Чтобы пользователь комбобокса мог либо выбирать из списка варианты, либо вводить свои - ставь стиль csDropDown.
|
Сообщ.
#9
,
|
|
|
KAV
несовсем выходит нет новых записей в файле sss.txt ... Добавлено в : Kav мне надо чтобы после добывки в ComboBox1->Items->Add(ComboBox1->Text); оно записывалось в файл и все а при открыти загружало |
Сообщ.
#10
,
|
|
|
Цитата PsiHo,8.04.04, 07:05 OLD при вводе значения и нажатия Button1 выдает cannot open file !!! А его там и нет Создай файл в той же директории, что и проект, или, например c:\pathname.dat. Или , или pupkin_lovely_file, или просто pathname.txt, не забыв в таком случае сделать: // загружаем Combobox'ы из файла bin\pathname.dat TIniFile* ini = new TIniFile(ExtractFilePath(Application->ExeName) + "pathname.txt"); Формат файла: ; Названия файлов [TITLE] FileTitle0=Title 1 FileTitle1=Title 2 ; Пути файлов [PATH] FilePath0=pathname1.txt FilePath1=C:\temp\pathname2.txt //или так И вперед! |
Сообщ.
#11
,
|
|
|
Цитата PsiHo,8.04.04, 10:17 после добывки в ComboBox1->Items->Add(ComboBox1->Text); оно записывалось в файл и все а при открыти загружало Например, вешаем это на две кнопки. Button1->Click ComboBox1->Items->Add(ComboBox1->Text); ComboBox1->Items->SaveToFile("ComboBox1.txt"); Button2->Click ComboBox1->Items->LoadFromFile("ComboBox1.txt"); Где-то так |
Сообщ.
#12
,
|
|
|
При добавлении как сделать проверку на одинаковые (избежание повторений)
я сделал так: запись: ComboBox1->Items->Add(ComboBox1->Text); ComboBox1->Items->SaveToFile("ComboBox1.txt"); ComboBox2->Items->Add(ComboBox2->Text); ComboBox2->Items->SaveToFile("ComboBox2.txt"); загрузка: ComboBox1->Items->LoadFromFile("ComboBox1.txt"); ComboBox2->Items->LoadFromFile("ComboBox2.txt"); |
Сообщ.
#13
,
|
|
|
Цитата PsiHo,8.04.04, 20:16 избежание повторений Не работает? Так речь, кажись, шла о сравнении элементов, а не об удалении повторов... Или нет? |
Сообщ.
#14
,
|
|
|
нет OLD все пашет но кто нибудь это знает как сделать.
|
Сообщ.
#15
,
|
|
|
Цитата PsiHo, 8.04.04, 23:16 избежание повторений Цитата PsiHo, 9.04.04, 15:31 нет OLD все пашет но кто нибудь это знает как сделать Избежание повторений- на уровне СomboBox чтото типа IndexOf? |