Главная страница
    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.005 c
1-40017
Verq
2002-05-31 23:19
2002.06.13
Объект по имени.


1-40031
XAlert
2002-05-31 21:05
2002.06.13
16 разрядные DLL в Delphi 5/6 ?


3-39926
DenNNis
2002-05-20 14:53
2002.06.13
Прошу помощи !!!!


1-40071
Hopsit
2002-06-02 14:42
2002.06.13
Сохранение Word документа из Delphi


1-39994
PTE
2002-06-03 12:37
2002.06.13
а как правильно выполнять арифмитические действия в StringGrid?





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