AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Checkbox

Offene Frage von "CodeX"
Ein Thema von stOrM · begonnen am 5. Apr 2007 · letzter Beitrag vom 21. Apr 2007
Antwort Antwort
Seite 3 von 3     123
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#21

Re: Checkbox

  Alt 6. Apr 2007, 13:18
Zitat von Flocke:
Ganz kleiner Dämpfer: nicht, wenn sie von TComponent abgeleitet sind und einen Owner haben
Auch wenn sie keinen Owner besitzen, kann es Probleme geben. Die CheckBoxen liegen ja normalerweise auf einem TWinControl, und diese Controls entsorgen bei ihrer Freigabe alle enthaltenen Controls. Abhilfe schafft die Verwendung einer Delphi-Referenz durchsuchenTComponentList. Diese Liste wird über die Freigabe von Controls informiert und entfernt dann die betroffenen Referenzen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#22

Re: Checkbox

  Alt 21. Apr 2007, 08:46
Zitat von DGL-luke:
Jo. is wohl sinnvoller:

Delphi-Quellcode:
function MakeCheckBoxes(Container: TWinControl; Captions: TStrings; CBOnClick: TNotifyEvent = nil): TObjectList;
var i: Integer;
    Size: TSize;
    buf: string;
begin
  Result := TObjectList.Create;
  for i := 0 to Captions.Count-1 do
  with Result[Result.Add(TCheckBox.Create(Container))] as TCheckBox do //sorry dafür. aber da mach ich jetzt kein extra faß variablen für auf.
  begin
    Parent := Container;
    Top := i * 16; //reicht 16?
    Left := 3;
    Height := 16;
    buf := Captions[i];
    GetTextExtentPoint32(Canvas.Handle, @buf[1], Length(buf),Size);
    Width := Size.cx + 16; //16 extra für die Box
    Tag := i;
    Caption := buf;
    OnClick := CBOnClick;
  end;
end;
Kannst Du bitte ein Anwendungsbeispiel dafür geben? Ich bekomme das nämlich nicht zum Laufen.
Konkret möchte ich in die dritte und vierte Spalte eine Checkbox ohne Beschriftung setzen.

Woran es hapert:
1. Canvas wird als undeklariert angezeigt. Ich habe deshalb "Canvas : TCanvas;" bei var von MakeCheckBoxes aufgenommen. Ist das so korrekt oder soll das wo anders herkommen?
2. Ich komme mit den Parametern nicht ganz zurecht. Als Container muss ich ja die entsprechende ListView angeben, oder? Ich welcher Weise werden aber die Captions benötigt/verwendet?

Bei meinen Versuchen wurde bestenfalls eine External Exception ausgegeben und dann eine Checkbox im ersten Column Header angezeigt ...

Ich wäre für Hilfe sehr dankbar.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#23

Re: Checkbox

  Alt 21. Apr 2007, 10:44
Hallo,

sorry, das sollte natürlich Container.Canvas heißen.

Und wenn du eh mit einer Listview arbeitest... die hat doch Checkboxes schon eingebaut?! Einfach die Eigenschaft CheckBoxes aktivieren...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#24

Re: Checkbox

  Alt 21. Apr 2007, 11:23
Zitat von DGL-luke:
sorry, das sollte natürlich Container.Canvas heißen.
das hatte ich probiert und gerade wider. das hilft nicht.

Zitat von DGL-luke:
Und wenn du eh mit einer Listview arbeitest... die hat doch Checkboxes schon eingebaut?! Einfach die Eigenschaft CheckBoxes aktivieren...
dann hab ich die aber genau in der ersten spalte und nur da. ich brauche die aber wie gesagt in zwei anderen spalten.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#25

Re: Checkbox

  Alt 21. Apr 2007, 12:09
ok. bei mir hat die listview einen Canvas. aber wenn du eh keinen text brauchst, kann man viel einfach weglassen:

Delphi-Quellcode:
function MakeBlankCheckBoxes(Container: TWinControl; Number: Cardinal; CBOnClick: TNotifyEvent = nil): TObjectList;
var i: Integer;
begin
  Result := TObjectList.Create;
  for i := 0 to number-1 do
  with Result[Result.Add(TCheckBox.Create(Container))] as TCheckBox do //sorry dafür. aber da mach ich jetzt kein extra faß variablen für auf.
  begin
    Parent := Container;
    Top := i * 16; //reicht 16?
    Left := 3; //das anpassen
    Height := 16;
    Width := 16; //16 extra für die Box
    Tag := i;
    Caption := '';
    OnClick := CBOnClick;
  end;
end;
Du wirst aber vermutlich das Problem haben, dass die CheckBoxes nicht von alleine mitscrollen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#26

Re: Checkbox

  Alt 21. Apr 2007, 12:41
Zitat von DGL-luke:
Du wirst aber vermutlich das Problem haben, dass die CheckBoxes nicht von alleine mitscrollen.
richtig
kann man diese nicht statt an listview an ein listviewitem anhängen? die position des listview ändert sich beim scrollen nicht, aber ja vielleicht die des listview items.

tut mir leid fürs nachfragen. ich kann das problem leider nicht alleine lösen, weil mir hierfür das spezialwissen fehlt.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:31 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