Форум: "Основная";
Текущий архив: 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.004 c