Odwołanie do komponentu

0

Czy można zrobić takie odwołanie ? Bo to niżej nie działa mi

zamiast pisania tak:

TPanel(FindComponent(ListView1.Selected.Caption).Font.Color)) := clBlack;

muszę odwołać się tak:

TPanel(FindComponent(ListView1.Selected.Caption) + ListView1.Selected.SubItems[0])) := ListView1.Selected.SubItems[1];

Gdzie w ListView1 mam takie kolumny:

Panel10 | .Font.Color | clBlack

0

Ad 1. zła ilość nawiasów, źle zrobione rzutowanie, to nie miało prawa zadziałać;
TPanel(FindComponent(ListView1.Selected.Caption)).Font.Color := clBlack;
Ad 2. nie tędy droga. odróżniasz napisz "czarny" od czarnego koloru? bo w kodzie tego nie robisz.
nie możesz dodawać do siebie obiektów, co miałoby być wynikiem takiej sumy? niestety nie to, czego oczekujesz. obiektów nie sumuje się z ich właściwościami. tego się nie da zrobić w taki sposób. najpierw findcomponent, potem na uzyskanej zmiennej GetPropInfo, które zwróci informacje o publicznych polach komponentu, za ich pomocą dojdziesz do pola Font, na nim znowu GetPropInfo itp.

http://www.scalabium.com/faq/dct0040.htm

0

Z tymi nawiasami to mój błąd, ale z GetPropInfo to nie wiem jak dalej

   TPanel(FindComponent(ListView1.Selected.Caption))  <---.... i co dalej zadeklarować ?
0

Proponuję użyć F1 albo google. pisanie programów poprzez pytanie o kolejne linijki kodu na forum jest dość powolne.

0

Z kolorem sobie poradziłem funkcją, którą napisałem:

function HexToDelphiKolor(Kolor: string): TColor;
begin
 Kolor  := Copy(Kolor,4,Length(Kolor));
 Result := RGB(StrToInt('$' + Copy(Kolor, 5, 2)), StrToInt('$' + Copy(Kolor, 1, 2)), StrToInt('$' + Copy(Kolor, 3, 2)));
end;

natomiast jak odwołać się do wskazanej ze zmiennej właściwości komponentu ?

Nie mogę wypisać wszystkich właściwości, chcę to zrobić w pętli, bo mam listę tych właściwości, ale nie wiem jak przypisać za pomocą GetProdInfo.

Takie rozwiązanie działa, ale muszę wypisać ręcznie wszystkie właściwości po kolei...

TPanel(FindComponent(ListView1.Selected.Caption)).Font.Color := HexToDelphiKolor(ListView1.Selected.SubItems[1]);
0

Dziękuję za pomoc :-[

1 użytkowników online, w tym zalogowanych: 0, gości: 1