AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[erledigt] CheckBox in Stringgrid

Ein Thema von Hansa · begonnen am 12. Jan 2006 · letzter Beitrag vom 18. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

[erledigt] CheckBox in Stringgrid

  Alt 12. Jan 2006, 21:30
Hi,

ich habe in eine Spalte eines Stringgrids Checkboxen eingebaut. Im OnDrawCell übergebe ich hierzu die Koordinaten der Stringgrid Zellen (Rect) an die Checkboxen, damit sie genau reinpassen. Nun werden sie allerdings immer wieder neu gezeichnet => flackern. Allerdings habe ich in dem Grid ganz andere Sachen drin (in Abhängigkeit des Zellinhalts umfärben, rechtsbündige Darstellung bei Zahlen, Nachkommastellen usw.) und da flackert nichts. Was ist da falsch ?

Hier noch Teil vom OnDrawCell :
Delphi-Quellcode:
        if ACol in BoolCols then begin
          sgCheckBox.Left := Rect.Left + sg.Left + 2;
          sgCheckBox.Top := Rect.Top + sg.top + 2;
          sgCheckBox.Width := Rect.Right - Rect.Left;
          sgCheckBox.Height := Rect.Bottom - Rect.Top;
          sgCheckBox.Visible := True;
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#2

Re: CheckBox in Stringgrid

  Alt 12. Jan 2006, 22:09
Hallo,

mal eine Frage dazu,
spendierst Du jeder betreffenden Zelle eine eigene CheckBox?
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#3

Re: CheckBox in Stringgrid

  Alt 13. Jan 2006, 00:07
moin hansa,

wie wäre es mit der Suche

CheckBox im Stringgrid .... gibt es genau einem Eintrag

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: CheckBox in Stringgrid

  Alt 13. Jan 2006, 00:10
Auf der Form ist eine einzige Checkbox. Und die wird allerdings immer wieder mit veränderten Koordinaten angezeigt.

@roter Kasten Schlaumeier bei mir ist da nicht.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#5

Re: CheckBox in Stringgrid

  Alt 13. Jan 2006, 00:16
http://www.delphipraxis.net/internal...box+stringgrid
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: CheckBox in Stringgrid

  Alt 13. Jan 2006, 07:12
Hallo,
Zitat von Hansa:
Auf der Form ist eine einzige Checkbox. Und die wird allerdings immer wieder mit veränderten Koordinaten angezeigt.
dann muss das flackern.
Durch das Verschieben der CheckBox von einer Zelle in eine andere,
wird die Zelle aus der die Checkbox entfernt wurde auch neu gezeichnet,
das Zeichnen verschiebt die Checkbox dann wieder usw. usw.
Dein Code fordert für jede Zelle in der Spalte die Checkbox-Verschiebung,
daraus entsteht dann eine Endlosschleife, folglich flackert es.
Dein Code in OnDrawCell muss das behandeln.

PseudoCode:
Code:
if ACol in CheckBoxSpalte then
  if SollCheckBox then
    CheckBoxNachHierVerschieben
    else
      LeereZelleZeichnen
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: CheckBox in Stringgrid

  Alt 13. Jan 2006, 10:49
Oh je. Das wird noch komplizierter. Habe das jetzt so gemacht :
Delphi-Quellcode:
        if ACol in BoolCols then begin
          DrawRect:=Rect;
          InflateRect(DrawRect,-1,-1);
          DrawState := ISChecked[StrToInt (sg.Cells [ACol,ARow]) = 1];
          sg.Canvas.FillRect(Rect);
          DrawFrameControl(sgArtNr.Canvas.Handle, DrawRect,DFC_BUTTON, DrawState);
Wenn ich das richtig dehe, dann sind die Checkboxen lediglich zu sehen und haben keine Funktion, oder ? Muß ich da jetzt noch mit MouseMove im SelectCell usw. hantieren ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#8

Re: CheckBox in Stringgrid

  Alt 13. Jan 2006, 10:54
Hallo

vielleicht hilft dir ja das weiter :link.

Das ist zwar eine ComboBox in einer StringGrid, aber das kann man ja umbauen.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#9

Re: CheckBox in Stringgrid

  Alt 13. Jan 2006, 11:30
und noch einer sdc der klappt sehr gut, du musst natürlich das control austauschen!
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: CheckBox in Stringgrid

  Alt 13. Jan 2006, 12:00
Das habe ich doch alles schon gesehen. Die Checkbox ist anders ! Aber egal. Gezeichnet war sie ja vorher sowieso richtig. Habe es jetzt so gemacht :

Delphi-Quellcode:
procedure Tfrm.sgClick(Sender: TObject);
begin
  inherited;
  if sg.Col in BoolCols then begin
    if StrVorhanden (sg.Cells [sg.Col,sg.Row]) then begin
      if StrToInt (sg.Cells [sg.Col,sg.Row]) = 1 then
        sgr.Cells [sg.Col,sgArtNr.Row] := '0'
      else
        sg.Cells [sg.Col,sg.Row] := '1';
    end;
  end;
end;
Ist auch besser für nicht so zielsichere. Die brauchen dann nur die richtige Zelle zu treffen und nicht die CheckBox selber. Tja, da sieht man mal wieder, wie man mit einem simplen Trick Delphi veranlaßt, genau das gewünschte zu machen. Und der Trick besteht darin, daß hinter der CheckBox in Wirklichkeit 1 oder 0 steht. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz