Einzelnen Beitrag anzeigen

torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#54

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 5. Sep 2007, 21:39
Moin Moin Oki,

ich bin auch schon ziemlich groggy, aber hier mal mein aktueller Status.

Das mit dem Rahmen passt nun, auch wenn ich NOCH nicht mit FrameRect gemacht habe. Kommt noch.

Dann habe ich mich mal an die Ausrichtung gewagt und siehe da, es gibt einen teilweisen Erfolg.

Folgenden Code habe ich benutzt, um die Ausrichtung zur vollziehen. Dabei hatte ich dass Problem, dass ich eigentlich die bekannte Eigenschaft Layout benutzen wollte, wie sie beim TLabel zum Einsatz kommt, aber dazu war leider nichts in der Hilfe zu finden.

Delphi-Quellcode:
var
  ...
  myFirstAlignment,mySecondAlignment : Cardinal;

    //init
    myFirstAlignment := DT_CENTER;
    mySecondAlignment:= DT_VCENTER;
    
    case TextAlign of
      taCenter : myFirstAlignment := DT_CENTER;
      taLeftJustify : myFirstAlignment := DT_LEFT;
      taRightJustify : myFirstAlignment := DT_RIGHT;
    end; //bis hierher ist alles super

    case Layout of
      tlTop : mySecondAlignment := DT_TOP;
      tlCenter : mySecondAlignment := DT_VCENTER;
      tlBottom : mySecondAlignment := DT_BOTTOM;
    end; //das hier funzt noch nicht

    DrawText(self.Canvas.Handle, PChar(FText), -1, TextRect,
             myFirstAlignment or mySecondAlignment or DT_WORDBREAK);
Folgenden Code benutze ich für das Layout:
Delphi-Quellcode:
type
  TLayout = (tlTop, tlCenter, tlBottom);

private
    FLayout:TLayout;
    procedure SetTextLayout(Layout : TLayout);
published
    property Layout : TLayout read FLayout write SetTextLayout;

procedure TmyPanel.SetTextLayout(Layout:TLayout);
begin
  If Layout = FLayout then Exit; // wenn gleicher Status nichts tun
  FLayout := Layout; // Status abspeichern
  Invalidate; // Control neu zeichnen
end;
Findest Du da einen Fehler? Am liebsten wäre mir ja, wenn ich die originale Eigenschaft LAYOUT nutzen könnte, wie beim Alignment...
Danke
Tom
  Mit Zitat antworten Zitat