Autor Beitrag
krampi
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 14.01.08 15:43 
Hallo gemeinde,

hier bin ich mal wieder, mal wieder mit einem Problemchen.
Folgendes Problem: Ein Popupmenufenster soll erst dann aufgerufen werden, wenn in der Listbox ein Eintrag selektiert ist. Das Popupfenster würde per Rechtsklick ausgelöst. Ist nichts markiert, so darf nichts geschehen.
Derzeit sieht der Code so aus - ist noch zerfleddert, da ich bis eben noch dachte, ich würd was gescheihtes hinrkeigen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
point:Tpoint;
i:integer;
b:Form1.ListBox1.Selected:=ItemIndex(i);


begin
if Button=mbRight
AND b
Then

begin
  GetCursorPos(point);
  PopupMenu3.Popup(point.X, point.Y);;
end;
end;


Ich bin für jede Hilfe dankbar. Sicher bin ich mir ja, dass ich mit "if" arbeiten muss und ich ja auch die Form1.ListBox1.Selected durch eine Variable deklarieren muss. Aber was mache ich falsch?

Vielen Dank.

grüße,

krampi


Moderiert von user profile iconGausi: Topic aus Sonstiges (Delphi) verschoben am Mo 14.01.2008 um 17:23
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mo 14.01.08 16:00 
ausblenden Delphi-Quelltext
1:
2:
i:=ListBox.ItemIndex
if ListBox.Selected[i] then...

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mo 14.01.08 16:15 
Hö? Wenn nichts selektiert ist, ist der ItemIndex immer -1. Das kann man auch in einer If-Bedingung testen.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
FSS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 83

Win 7 Professional 64Bit
Delphi 7 PE, Delphi 2005 PE, Turbo Delphi Explorer 2006
BeitragVerfasst: Mo 14.01.08 16:37 
Habe es jetzt nicht getestet aber eigentlich müsste folgendes klappen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
if (Button=mbRight) 
AND (b > -1
Then 
begin 
  GetCursorPos(point); 
  PopupMenu3.Popup(point.X, point.Y);; 
end;


bzw.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
begin 
if Button=mbRight) 
AND (Form1.ListBox1.ItemIndex > -1)
Then 
begin 
  GetCursorPos(point); 
  PopupMenu3.Popup(point.X, point.Y);; 
end;


Dann bräuchte man die Variable b gar nicht (zumindest nicht an dieser Stelle).
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mo 14.01.08 18:17 
Hallo,

schau Dir mal ListBox.ItemAtPos an, damit kannst Du ermitteln ob ein Item und wenn, welches Item sich an der Mausposition befindet.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 14.01.08 18:22 
Ich erläutere mal nen anderen Ansatz: Das Popup-Menü hat das Event OnPopup (oder so ähnlich). Das wird aufgerufen, wenn das Ding geöffnet wird (und wenn ggf. eine Hotkey-Kombo gedrückt wird).

In diesem Event kannst du dann z.B. einzelne Menüeinträge (de-)aktivieren. Das dürfte für den User transparenter sein als kein Menü, wenn kein Item markiert ist.

_________________
We are, we were and will not be.