Autor Beitrag
fuba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win7
D7 Ent.
BeitragVerfasst: Fr 07.03.08 22:10 
Hi,

Würde gerne das selektieren in einer ListBox unterbinden.
Wie mache ich das am besten.

danke für eure antworen.

lg, fuba
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 764
Erhaltene Danke: 127



BeitragVerfasst: Fr 07.03.08 22:36 
Ev. hilft ja das:

ausblenden Delphi-Quelltext
1:
Enabled:=False;					

ub60
fuba Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win7
D7 Ent.
BeitragVerfasst: Fr 07.03.08 23:11 
ja, die idee hatte ich auch schon, aber dann funzt die Scrollbar nicht ;)
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 764
Erhaltene Danke: 127



BeitragVerfasst: Sa 08.03.08 00:14 
Dann so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  ListBox1.ItemIndex:=-1;
  BitBtn1.SetFocus;
end;

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ListBox1.ItemIndex:=-1;
  BitBtn1.SetFocus;
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  ListBox1.ItemIndex:=-1;
  BitBtn1.SetFocus;
end;

Statt BitBtn1 einen vorhandenen Button einsetzen.

ub60
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 08.03.08 01:07 
Statt einem Button kannst du auch ein 0x0-Panel verwenden. Nur ausblenden darfst du es nicht - es muss immer genau ein sichtbares Fenster den Fokus haben. So ist Windows nun mal (und ich bin froh darüber ;))
fuba Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win7
D7 Ent.
BeitragVerfasst: Sa 08.03.08 05:53 
ja, auch das habe ich schon versucht, nur finde ich das unsauber.

Ich will eigentlich geanu das gleiche, als währe die Listbox Disabled nur mit dem unterschied, die scrollbar solle funktionieren.

muss ja irgendwie möglich sein oder?

übrigens bis jetzt noch alles versucht, ohne erfolg:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TListBox) do
  begin
    Canvas.Brush.Color := Color;
    Canvas.Font.Color := Font.Color;
    canvas.FillRect(rect);
    DrawText(Canvas.Handle,
    PChar(Items[Index]),
    -1,
    Rect,
    DT_SINGLELINE or DT_VCENTER);

    if odSelected in state then Canvas.DrawFocusRect(rect);
  end;  
end;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  if ListBox1.ItemIndex>=0 then ListBox1.Selected[ListBox1.ItemIndex]:=false;
end;
bflegel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP, Win 7, BS2000
D5
BeitragVerfasst: Sa 08.03.08 08:31 
Hallo fuba,

ist vielleicht folgendes was Du suchst?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  Listbox1.ItemIndex := -1;
end;


Damit wird die Selektion aufgehoben.

bye
bflegel

_________________
I know all the jokes about my name
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 764
Erhaltene Danke: 127



BeitragVerfasst: Sa 08.03.08 12:58 
@bflegel: Hast Du gelesen, was ich geschrieben habe?

@fuba: Also zumindest funktioniert meine Variante bei mir ;) .

ub60
bflegel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP, Win 7, BS2000
D5
BeitragVerfasst: Sa 08.03.08 13:31 
Hallo,

@ub60: Hab ich ehrlich gesagt übersehen :oops:

Aber ich gehe nur auf den Listbox-Click los, ohne noch einen Setfocus zu setzen. Der ist doch unnötig?!? Und warum fragst Du zusätzlich auch noch den Mousemove und Mousedown ab? Hab ich was übersehen?

Fragen über Fragen :wink:

bye bflegel

_________________
I know all the jokes about my name
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 764
Erhaltene Danke: 127



BeitragVerfasst: Sa 08.03.08 14:13 
user profile iconbflegel hat folgendes geschrieben:

@ub60: Hab ich ehrlich gesagt übersehen :oops:

Kann ja mal passieren :D .

user profile iconbflegel hat folgendes geschrieben:
Hallo,
Aber ich gehe nur auf den Listbox-Click los, ohne noch einen Setfocus zu setzen. Der ist doch unnötig?!? Und warum fragst Du zusätzlich auch noch den Mousemove und Mousedown ab? Hab ich was übersehen?

Das Anklicken mit der Maus markiert den angeklickten Eintrag (auch bei ItemIndex=-1) mit einem gepunkteten Rechteck. Deshalb der SetFocus auf ein anderes Element, das den Fokus aufnehmen kann.
Beim Bewegen mit gedrückter Maustaste wird die Markierung wieder blau. Deshalb MausMove.
Musst Du einfach mal probieren.

ub60
bflegel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP, Win 7, BS2000
D5
BeitragVerfasst: Sa 08.03.08 14:34 
Zitat:

Das Anklicken mit der Maus markiert den angeklickten Eintrag (auch bei ItemIndex=-1) mit einem gepunkteten Rechteck. Deshalb der SetFocus auf ein anderes Element, das den Fokus aufnehmen kann.
Beim Bewegen mit gedrückter Maustaste wird die Markierung wieder blau. Deshalb MausMove.


An solche "Spielereien" hab ich natürlich nicht gedacht. Kommt davon wenn man in aller Frühe schon versucht Probleme zu lösen :roll:

Schönen Tag wünsche ich noch.

bye
bflegel

_________________
I know all the jokes about my name
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Sa 08.03.08 15:35 
Wohl verstehe ich Frage und Antwoerten, aber nicht den Sinn, :roll: !

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 08.03.08 21:16 
user profile iconKroko hat folgendes geschrieben:
Wohl verstehe ich Frage und Antwoerten, aber nicht den Sinn, :roll: !

:arrow: Log
:arrow: Schöne Textanzeige
:arrow: usw.
fuba Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win7
D7 Ent.
BeitragVerfasst: Sa 08.03.08 23:31 
user profile iconYogu hat folgendes geschrieben:
user profile iconKroko hat folgendes geschrieben:
Wohl verstehe ich Frage und Antwoerten, aber nicht den Sinn, :roll: !

:arrow: Log
:arrow: Schöne Textanzeige
:arrow: usw.


Yogu weiß was ich will :D

Das ganze soll ne Log zum ablauf meines Programms sein.
Das ganze dient eigentlich dazu,
um die Rahamen der Selektion, welche irgendwie nicht mehr verschwinden, wegzubekommen.
Ist ein hässlicher Schönheitsfehler ;)
Dazu dachte ich mir, einfach das Markieren unterbinden.

Aber wie es aussieht, ist es doch nicht SO einfach :shock:

Naja, mal sehen ob wir da ne Lösung finden.

Danke euch aber schonmal für eure Antworten :)
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: Sa 08.03.08 23:55 
Hallo,

Du könntest die Items in OnDrawItem selbst zeichnen und dabei den Focusrahmen übermalen.

//Edit: sehe gerade erst das Du das schon versucht hast :oops:

odSelected durch odFocused ersetzen, dann sollte es funktionieren:
ausblenden Delphi-Quelltext
1:
2:
    //if odSelected in state then Canvas.DrawFocusRect(rect);
    if odFocused in state then Canvas.DrawFocusRect(rect);

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

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 09.03.08 01:35 
Wie wäre es schlicht mit dem OnEnter Ereignis ;-):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TfrmMain.lboTestEnter(Sender: TObject);
begin
  XY.SetFocus;
end;
XY ist eine andere Komponente auf dem Formular, die den Fokus bekommen soll stattdessen, zum Beispiel eben ein Panel der Größe 0x0 wie jemand bereits gesagt hat, wenn du keine andere Komponente hast, die sich als Fokusziel eignet.

Damit verhinderst du jegliches Markieren. Genauso sieht übrigens auch ein Memo aus, wenn du dort den Cursor auf den Standardcursor setzt und OnEnter genauso benutzt.
fuba Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win7
D7 Ent.
BeitragVerfasst: So 09.03.08 10:39 
hmm, funktioniert leider alles nicht :(

Entweder man sieht die Ganz Markierung oder der Rahmen bleibt über und der brennt sich dann in die Listbox.

Habs auch schon mit Repaint versucht, aber ist auch das selbe.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 09.03.08 11:47 
Hmm, interessant, was genau ist denn daran nicht so wie du es haben möchtest?
Einloggen, um Attachments anzusehen!
fuba Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win7
D7 Ent.
BeitragVerfasst: So 09.03.08 17:31 
user profile iconjaenicke hat folgendes geschrieben:
Hmm, interessant, was genau ist denn daran nicht so wie du es haben möchtest?


hmm, wenn ich ein panel setzt dann gehts!

Danke dir :)