zaznaczanie dwoch itemow w roznych listboxach

0

Hi all!

zaczynam zabawe z delphi, mam problem z dwoma listboxami.
Chcialbym zeby jak klikne w jeden item na jednym listboxie, to zeby na drugim listboxie zaznaczyl sie item o tej samej pozycji co pierwszy.

Druga sprawa troche trudniejsza jak przewijac jednoczesnie dwa scrolle listboxow, zeby obydwa byly synchroniczne...

Prosze o wyrozumialosc i pomoc,
pozdrawiam serdecznie

0

Poszukaj jakiejś właściwości w tym listboxie o podobnej nazwie do "SelectedItemIndex" i eventu "OnSelectItem" albo "ChangeSelectedIndex". I w tym evencie (listbox1) daj zmianę właściwości listboxa 2., która odpowiada za zmianę zaznaczonego elementu. Z tym przewijaniem to już nie powiem, bo Delphi dawno nie używałem i nie mam pod ręką niczego co, by mogło mi pomóc odpowiedzieć.

0

zaczynam zabawe z delphi, mam problem z dwoma listboxami.
Chcialbym zeby jak klikne w jeden item na jednym listboxie, to zeby na drugim listboxie zaznaczyl sie item o tej samej pozycji co pierwszy.

Druga sprawa troche trudniejsza jak przewijac jednoczesnie dwa scrolle listboxow, zeby obydwa byly synchroniczne...

Wszystko rozwiążesz używając co najmniej jednego z następujących: google, F1, TBrain.

1

Pewnie @-123 będzie miał mi za złe, ale kolejny raz się zlituje, chociaż wyraża przy okazji swoje zdziwienie ponieważ...

Ad 1:
A w czy masz problem? Co za kłopot napisac coś w stylu poniżej. Przecież to logiczne, że na zmianę Itemów w ListBox reagujesz w ich zdarzeniach OnClick, należy jedynie sprawdzać if'ami czy Itemy istnieją żeby nie dostawać wyjątków od IDE o tym, że index ot ouf bounds i tym podobne. Program powinien być zawsze idioto odporny, a jego programista powinien mieć i używać TBrain jak wspomniał poprzednik. Komponent jest darmowy, ale każdy ma go w innej wersji zaawansowania, należy po prostu myśleć samodzielnie i kombinować oraz googlować zanim zada się pytanie. Nawet tutaj i w dziale Newbie. Wtedy Twój TBrain pozwala Tobie myśleć i być samodzielnym.

//...
procedure TForm1.ListBox1Click(Sender : TObject);
var
  Idx : integer;
begin
  Idx := ListBox1.ItemIndex;
  if Idx > -1 then
  begin
    if Idx <= ListBox2.Items.Count - 1 then
    begin
      ListBox2.ItemIndex := Idx;
    end;
  end;
end;

procedure TForm1.ListBox2Click(Sender : TObject);
var
  Idx : integer;
begin
  Idx := ListBox2.ItemIndex;
  if Idx > -1 then
  begin
    if Idx <= ListBox1.Items.Count - 1 then
    begin
      ListBox1.ItemIndex := Idx;
    end;
  end;
end;
//...

Ad 2:
Miałem gdzieś gotowy kod na dysku, ale nie potrafię na szybko odnaleźć, to było na pewno coś z WndProc, ale znowu tutaj moje zdziwienie, bo coż za problem wpisać w google: delphi scroll two listbox the same time - sam sprawdziłem, oczywiście żaden. Trzeba tylko chcieć. I masz wtedy jako pierwszy wynik te stronę: http://www.delphipages.com/forum/showthread.php?t=164288 - kod działa, ale oczywiście można to rozwiązać przez obsługę komunikatów dla obu ListBoxów, czyli na pewno coś z WndProc albo całej formatki albo konkretnych kontrolek, a to również jest udokumentowanie jeżeli nie wystarczą Tobie informacje na MSDNie, to z pewnością można wygooglowac mnóstwo przykładów. Rozumiem każdego początki, ale lenistwa do korzystania z google i niechęci do pomyślenia nic nie usprawiedliwi, także ogarnij się i na przyszłośc po prostu poszukaj i pokombinuj zanim zapytasz, a tymbardziej w kwestii tak - na prawdę uwierz mi - banalanych zagadnień.

2

Pewnie @-123 będzie miał mi za złe, ale kolejny raz się zlituje

Zgadłeś :P

Przecież to logiczne, że na zmianę Itemów w ListBox reagujesz w ich zdarzeniach OnClick

TPytacz has no field named logika

używać TBrain jak wspomniał poprzednik.

Definicja jego TBrain: type TBrain=class(TObject) end;.

Wtedy Twój TBrain pozwala Tobie myśleć i być samodzielnym.

Jego TBrain się nie rozwinie póki znajdą się osoby które użyją swojego TBrain za niego. Dzięki Boże że ja na takich nie trafiłem :P

Miałem gdzieś gotowy kod na dysku, ale nie potrafię na szybko odnaleźć, to było na pewno coś z WndProc

Z WndProc? Przecież da się bez, jedną instrukcją przypisania, tak jak zresztą jest pod tym linkiem co dałeś.

Rozumiem każdego początki, ale lenistwa do korzystania z google i niechęci do pomyślenia nic nie usprawiedliwi, także ogarnij się i na przyszłośc po prostu poszukaj i pokombinuj zanim zapytasz

A ja zawsze myślałem że pytanie w googlu to szczyt lenistwa bo odpowiedź jest szybciej i lepszej jakości niż na forum. Cóż, kłania się brak logiki u pytacza.

0

ok dzieki, przetestuje.

Tbrain nie posiadam bo pracuje na delphi 2 :p

pozdrawiam

1
skoczekkk napisał(a):

Tbrain nie posiadam bo pracuje na delphi 2

Delphi 2? Widzę że programowanie ekstremalne. Bez TBrain to już ekstremalne na maksa.

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