Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klassen Ableiten... Aber wie (https://www.delphipraxis.net/88617-klassen-ableiten-aber-wie.html)

Real_Thunder 18. Mär 2007 01:48


Klassen Ableiten... Aber wie
 
Irgendiwe stehe ich gerade auf den Schlauch was das Ableiten von Klassen Betrifft....

ich habe es so versucht:

Delphi-Quellcode:
type
  THaAuswahlRec = Record
    FeldAus: TCheckBox;
    SpaltenBrei: Integer;
    SpaltenBez:String;
    BoxChecked:Boolean;
   end;

   TSGrid = class(TStringGrid)

    public
    constructor Create(Sender: TObject); // Eigenen Constcutor setzten

    end;

  TStartForm = class(TForm)
    Hauptmenu: TMainMenu;
    Patenschaften1: TMenuItem;
    Sterntaler1: TMenuItem;
    ...
    ...
  end;


...
...
...

constructor TSGrid.Create(Sender: TObject);

begin
constructor TSGrid.Create(Sender: TObject);

begin

  PicUp:= TBitmap.Create;
  PicUp.LoadFromResourceName(HInstance, 'ARROWUP');
  PicUp.Transparent:= True;
  PicDown:= TBitmap.Create;
  PicDown.LoadFromResourceName(HInstance, 'ARROWDOWN');
  PicDown.Transparent:= True;

end;
Das Ganze hat den Hintergrund das ich versuhe dieses in mein Programm einzubinden
Delphi-PRAXiS :: TStringGrid, Sortier-Pfeil anzeigen

end;

Christian Seehase 18. Mär 2007 01:54

Re: Klassen Ableiten... Aber wie
 
Moin Real Thunder,

warum gibst Du Deinem Constructor Sender:TObject?
Bei einem StringGrid wäre üblich AOwner:TComponent.
Du kannst den Konstruktor zwar so gestalten, wie Du willst bzw. es brauchst, aber eine Komponente sollte schon den Owner mit übergeben bekommen, da dieser, wenn er angegeben wird, für die Freigabe zuständig ist.

Ausserdem fehlt in Deinem Konstructor noch der Aufruf

Delphi-Quellcode:
begin
  inherited;
  //...
end;

Real_Thunder 18. Mär 2007 02:09

Re: Klassen Ableiten... Aber wie
 
vielen dank,
nun bekmme ich keine exeption mehr und er erstellt mir auch das Stringgrid...

nn muß ich nurnoch irgendwie herausbekommen, wie dies hier gemeint ist:

Zitat:

und im OnDrawCell des Forms

Die Zeile
iOrderId=ProjectList.iOrderId

ist True, wenn die aktuell anzuzeigende
Spalte (ACol) die Sortierspalte ist.

ProjectList.bOrderAsc benutze ich zum Umkehrung der Sortierung
Delphi-Quellcode:
  if (ARow=0) then
  begin
    iOrderId:= GridColIndex2OrderId(ACol);

    Inc(Rect.Left,2);

    if iOrderId=ProjectList.iOrderId then
    begin
      Rect.Right:= Rect.Right-16;
    end;

    DrawText(c.Handle, PChar(theGrid.Cells[ACol,ARow]),
      Length(theGrid.Cells[ACol,ARow]), Rect,
      DT_END_ELLIPSIS or DT_CENTER);

    if iOrderId=ProjectList.iOrderId then
    begin
      Rect.Right:= Rect.Right+16;
    end;

    if iOrderId=ProjectList.iOrderId then
    begin
      if ProjectList.bOrderAsc then
      begin
        c.Draw(Rect.Right-15,((Rect.Bottom-Rect.Top) div 2)-6,Grid.PicUp);
      end
      else
      begin
        c.Draw(Rect.Right-15,((Rect.Bottom-Rect.Top) div 2)-6,Grid.PicDown);
      end;
    end;
ich merke schon.. muß mich mal wieder mit den Delphi "Basics" befassen


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz