Autor |
Beitrag |
fuba
      
Beiträge: 125
Win7
D7 Ent.
|
Verfasst: 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
      
Beiträge: 764
Erhaltene Danke: 127
|
Verfasst: Fr 07.03.08 22:36
Ev. hilft ja das:
Delphi-Quelltext
ub60
|
|
fuba 
      
Beiträge: 125
Win7
D7 Ent.
|
Verfasst: Fr 07.03.08 23:11
ja, die idee hatte ich auch schon, aber dann funzt die Scrollbar nicht 
|
|
ub60
      
Beiträge: 764
Erhaltene Danke: 127
|
Verfasst: Sa 08.03.08 00:14
Dann so:
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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: 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 
      
Beiträge: 125
Win7
D7 Ent.
|
Verfasst: 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:
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; |
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.ListBox1Click(Sender: TObject); begin if ListBox1.ItemIndex>=0 then ListBox1.Selected[ListBox1.ItemIndex]:=false; end; |
|
|
bflegel
      
Beiträge: 193
Erhaltene Danke: 1
Win XP, Win 7, BS2000
D5
|
Verfasst: Sa 08.03.08 08:31
Hallo fuba,
ist vielleicht folgendes was Du suchst?
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
      
Beiträge: 764
Erhaltene Danke: 127
|
Verfasst: Sa 08.03.08 12:58
@bflegel: Hast Du gelesen, was ich geschrieben habe?
@fuba: Also zumindest funktioniert meine Variante bei mir  .
ub60
|
|
bflegel
      
Beiträge: 193
Erhaltene Danke: 1
Win XP, Win 7, BS2000
D5
|
Verfasst: Sa 08.03.08 13:31
Hallo,
@ub60: Hab ich ehrlich gesagt übersehen
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
bye bflegel
_________________ I know all the jokes about my name
|
|
ub60
      
Beiträge: 764
Erhaltene Danke: 127
|
Verfasst: Sa 08.03.08 14:13
bflegel hat folgendes geschrieben: |
@ub60: Hab ich ehrlich gesagt übersehen |
Kann ja mal passieren  .
bflegel 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
      
Beiträge: 193
Erhaltene Danke: 1
Win XP, Win 7, BS2000
D5
|
Verfasst: 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
Schönen Tag wünsche ich noch.
bye
bflegel
_________________ I know all the jokes about my name
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Sa 08.03.08 15:35
Wohl verstehe ich Frage und Antwoerten, aber nicht den Sinn,  !
_________________ 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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Sa 08.03.08 21:16
|
|
fuba 
      
Beiträge: 125
Win7
D7 Ent.
|
Verfasst: Sa 08.03.08 23:31
Yogu hat folgendes geschrieben: | Kroko hat folgendes geschrieben: | Wohl verstehe ich Frage und Antwoerten, aber nicht den Sinn, ! |
Log
Schöne Textanzeige
usw. |
Yogu weiß was ich will
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
Naja, mal sehen ob wir da ne Lösung finden.
Danke euch aber schonmal für eure Antworten 
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: 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
odSelected durch odFocused ersetzen, dann sollte es funktionieren:
Delphi-Quelltext 1: 2:
| if odFocused in state then Canvas.DrawFocusRect(rect); |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 09.03.08 01:35
Wie wäre es schlicht mit dem OnEnter Ereignis  : 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 
      
Beiträge: 125
Win7
D7 Ent.
|
Verfasst: 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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 125
Win7
D7 Ent.
|
Verfasst: So 09.03.08 17:31
jaenicke 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 
|
|