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

Вниз

Combobox Items   Найти похожие ветки 

 
Сатир   (2002-06-03 14:41) [0]

Народ! Подскажите, как присвоить в комбобокс в качестве элементов значения перечисляемых типов, напр., у меня есть тип:

type TRVAlignment = (rvaLeft, rvaRight, rvaCenter, rvaJustify);

Как призвоить все его значения комбобоксу, а потом при выборе, присваивать зничения из комбобокса переменной этого типа?


 
Игорь Шевченко   (2002-06-03 14:44) [1]

uses TypInfo;

function GetEnumName(TypeInfo: PTypeInfo; Value: Integer): string;
function GetEnumValue(TypeInfo: PTypeInfo; const Name: string): Integer;


 
Сатир   (2002-06-03 15:04) [2]

2Игорь Шевченко © (03.06.02 14:44)
А можна пример использования этих функций, плз.


 
Игорь Шевченко   (2002-06-03 15:07) [3]

К примеру: (classes.pas)

procedure WriteSet(Value: Longint);
var
I: Integer;
BaseType: PTypeInfo;
begin
BaseType := GetTypeData(PropType)^.CompType^;
WriteValue(vaSet);
for I := 0 to SizeOf(TIntegerSet) * 8 - 1 do
if I in TIntegerSet(Value) then WriteStr(GetEnumName(BaseType, I));
WriteStr("");
end;



 
Сатир   (2002-06-03 15:17) [4]

2Игорь Шевченко © (03.06.02 15:07)
Покажите, пожалуйста, как применить эти функции для заполнения списка значениями типа и наоборот, присвоением выбраного значения в списке переменной данного типа.


 
Andrey007   (2002-06-03 15:31) [5]

А почему бы, не мудрствуя, не засунуть эти значения в Items?


 
Сатир   (2002-06-03 15:39) [6]

2Andrey007
а как их перечислять? руками набрать я-то их смогу, а как обратно присваивать значения? будет несовместимость типов:-(





 
Игорь Шевченко   (2002-06-03 15:53) [7]

uses TypInfo;

type
TMyType = (mcOne, mcTwo, mcThree);

procedure TForm1.Button6Click(Sender: TObject);
var
X : String;
ATypeInfo : PTypeInfo;
I : TMyType;
begin
ATypeInfo := TypeInfo(TMyType);
for I:=Low(TMyType) to High(TMyType) do begin
X := GetEnumName(ATypeInfo, Integer(I));
ComboBox1.Items.Add(X);
end;
end;

При выборе из ComboBox:
Использовать функцию GetEnumValue


 
Сатир   (2002-06-03 16:49) [8]

2Игорь Шевченко ©
кстати, я почти также сделал
i:=0;
with cbParaAlignment.Items do
for a:=low(TRVAlignment) to high(TRVAlignment) do begin
add(GetEnumName(TypeInfo(TRVAlignment),i));
i:=i+1;
end;
а как присвоить?
допустим у меня есть Combobox1.text и переменная T:TMyType
как присвоить строковое значение переменной этого типа?


 
Игорь Шевченко   (2002-06-03 17:00) [9]

procedure TForm1.ComboBox1Change(Sender: TObject);
var S : String;
I : TMyType;
begin
if ComboBox1.ItemIndex <> -1 then begin
S := ComboBox1.Items[ComboBox1.ItemIndex];
I := TMyType(GetEnumValue(TypeInfo(TMyType), S));
end;
end;

Я же писал про GetEnumValue...


 
Сатир   (2002-06-03 17:50) [10]

2Игорь Шевченко ©
спасибо, только обработчик нужно ставить OnSelect....


 
Игорь Шевченко   (2002-06-03 17:54) [11]

Кому нужно ? :-)))
Я написал пример, а в каком обработчике - это ведь без разницы
:-)



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

Форум: "Основная";
Текущий архив: 2002.06.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
1-40056
Kozhanov
2002-05-24 14:18
2002.06.13
поиск узла в дереве


3-39959
Maxs
2002-05-21 18:33
2002.06.13
Обработка ошибок ADO


1-40001
BofA
2002-06-03 17:30
2002.06.13
Вопрос по созданию компонента


4-40213
zhmax
2002-04-10 08:22
2002.06.13
Профессионалы ! Как грохнуть ПОТОК по его ID ?


4-40199
kvcomp
2002-03-05 16:25
2002.06.13
Как сгенерировать нажатие клавиши?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский