ComboBox na TaskBarze nie chce działać...

0

Mam taki kod:

procedure TMainForm.FormCreate(Sender: TObject);
var
  wndHandle : THandle;
  wndClass : array[0..50] of Char;
begin
  //znajduje nazwę i uchwyt do TaskBar'a Windozy
  StrPCopy(@wndClass[0], 'Shell_TrayWnd');
  wndHandle := FindWindow(@wndClass[0], nil);
  shCombo := TComboBox.Create(Nil);
  shCombo.ParentWindow := wndHandle;
  shCombo.OnChange := ComboChange;
  //Pozycja pod paskiem Start  
  shCombo.Top := 35;
  shCombo.Left := 5;
  shCombo.Width := 96;
  shCombo.Height := 21;
  shCombo.Visible := True;
  shCombo.AutoComplete := True;
  shCombo.AutoDropDown := TRue;
  shCombo.Font.Name := 'Courier New';
  shCombo.Items.Add(':Koniec');
  shCombo.Show;
end;

I wszystko gudi tworzy mi Combobox'a...
user image

ale ta procedura już nie chce działać. Program powinien się zamknąć jak klinke na :Koniec ale nic się nie dzieje

procedure TMainForm.ComboChange(Sender: TObject);
begin
  If shCombo.ItemIndex = 0 Then Application.Terminate;
end;

Gdzie tu jest błąd, lub co ja źle robię??

Pozdraiwam...

[Dopisane]
Ni nie działa... Ani w onChange ani za pomocą indexów...<font color="blue"></span>

0

Tu nie chodzi o tskbara ale o OnClick, uzyj tego w OnChange.

0

Może lepiej daj w onchange? I sprawdzaj nie na podstawie textu, tylko na podstawie indexów.

0

Tak przypisz rodzica ComboBoxa:

shCombo.Parent:=Form1;
Windows.SetParent(shCombo.Handle,wndHandle);

I przed zamknięciem programu nie zapomnij o zwolnieniu (shCombo.Free).

0

Tak przypisz rodzica ComboBoxa:

shCombo.Parent:=Form1;
Windows.SetParent(shCombo.Handle,wndHandle);

I przed zamknięciem programu nie zapomnij o zwolnieniu (shCombo.Free).

Niestety to nie działa. A co gorsza powoduje to, że combobox się nie wyświetla...

0

Hmm... U mnie na odwrót - jak napiszę shCombo.ParentWindow:=wndHandle, to się się nawet itemy nie dodaja do niego. Też mam winXP... Dziwna sprawa :/

// całe mam tak:

var
  MainForm: TMainForm;
  shCombo: TComboBox;

implementation

{$R *.dfm}

procedure TMainForm.ComboChange(Sender: TObject);
begin
   if shCombo.ItemIndex = 0 then
    begin
     shCombo.Free;
     halt;
    end;
end;

procedure TMainForm.FormCreate(Sender: TObject);
var
   wndHandle : THandle;
   wndClass : array[0..50] of Char;
begin
   //znajduje nazwę i uchwyt do TaskBar'a Windozy
   StrPCopy(@wndClass[0], 'Shell_TrayWnd');
   wndHandle := FindWindow(@wndClass[0], nil);
   shCombo := TComboBox.Create(nil);
   shCombo.Parent := MainForm;
   Windows.SetParent(shCombo.Handle,wndHandle);
   shCombo.OnChange := ComboChange;
   //Pozycja pod paskiem Start
   shCombo.Top := 35;
   shCombo.Left := 5;
   shCombo.Width := 96;
   shCombo.Height := 21;
   shCombo.Visible := True;
   shCombo.AutoComplete := True;
   shCombo.AutoDropDown := TRue;
   shCombo.Font.name := 'Courier New';
   shCombo.Items.Add(':Koniec');
end;

i działa w 100%...

0
shCombo.ParentWindow := Handle;

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