AGB  ·  Datenschutz  ·  Impressum  







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

Event wird nicht gefeuert- eigene Komponente

Ein Thema von cherry · begonnen am 28. Mai 2009 · letzter Beitrag vom 28. Mai 2009
Antwort Antwort
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Event wird nicht gefeuert- eigene Komponente

  Alt 28. Mai 2009, 11:03
hi ...

also ich weiss nicht woran es liegt, aber das OnClick Ereignis geht net:

Delphi-Quellcode:
{------------------------------------------------------------------------------}
{  Borland Delphi Visual Component Library                                     }
{                                                                              }
{  SoftScrollingText.pas - EnemyleftSoftScrollingText                          }                    
{                                                                              }
{  Mit dieser Komponente kannst du z.B. im Info-Teil deines Programms          }
{  Informationen Preis geben. Das interessante daran, du kannst den Text wie   }
{  ein Filmabspann laufen lassen. ssText1.scroll := true !                     }
{  Dein Text kann ein und oder Ausgeblendet werden, benutze dazu die           }
{  Farbverläufe.                                                               }
{                                                                              }
{                                                                              }
{  OpenSource:                                                                 }
{                                                                              }
{  Diese Komponente kann beliebig und frei eingesetzt werden.                  }
{  Sie unterliegt keiner rechtlichen Bestimmung.                               }
{  Auch kannst du die Komponente beliebig anpassen oder weiter entwickeln.     }
{                                                                              }
{  Unter ReleaseNotes kannst du deinen Namen hinschreiben und erklären         }
{  was du gemacht hast. ES WERDEN KEINE NAMEN GELÖSCHT. Es wäre nett, wenn     }
{  du nach deinen Änderungen die Komponente wieder öffentlich zur Verfügung    }
{  stellst und die relevanten Personen darüber informierst.                    }                                                        
{                                                                              }
{------------------------------------------------------------------------------}
///////////////////////////////////////////////////////////////////////////////
// SOFTSCROLLINGTEXT (OS) 2009, Enemyleft [email]enemyleft@gmail.com[/email]
///////////////////////////////////////////////////////////////////////////////
// ReleaseNotes:
//
// > v1.0.0 27.05.09 - Enemyleft > Fertiges **RELEASE 1.0**
//
// RELEASE 1.0 Features By Enemyleft
// ---------------------------------
// . SoftScrollingText
// . blend- in/-out properties
// . horizontal gradient
// . vertical gradient
// . many color propertys
//
///////////////////////////////////////////////////////////////////////////////

unit SSText;

interface

uses
  SysUtils, Classes, Controls, ExtCtrls, Windows, Dialogs, Messages, GraphUtil,
  Graphics, Math, GR32, GR32_Image;

type
  gradient = (grNone, grToptoBottom, grLefttoRight);
  BlendMode = (bmNone, bmIn, bmOut);

  TSSText = class(TCustomControl)
  private
    { Private-Deklarationen }

    tx: Integer;
    ty: Integer;
    ScrollTimer: TTimer;
    TextWidth: Integer;

    FTextPosFromLeft: Integer;
    FTextBeginHight: Integer;

    FColor1: TColor;
    FColor2: TColor;
    FPanelColorTop1: TColor;
    FPanelColorTop2: TColor;
    FPanelColorBottom1: TColor;
    FPanelColorBottom2: TColor;
    FPanelColorRight1: TColor;
    FPanelColorRight2: TColor;
    FPanelColorLeft1: TColor;
    FPanelColorLeft2: TColor;
    FGradient: gradient;
    FShowPanelTop: Boolean;
    FShowPanelLeft: Boolean;
    FShowPanelRight: Boolean;
    FShowPanelBottom: Boolean;

    FCaption: TCaption;
    FBorder: Boolean;
    FBorderColor: TColor;

    FLines: TStrings;
    FScroll: Boolean;
    FSpeedx: Integer;
    FSpeedy: Integer;
    FSpReversex: Boolean;
    FSpReversey: Boolean;

    pb: TPaintBox32;
    bmp32: TBitmap32;

    procedure SetTextPosFromLeft(Value: Integer);
    procedure SetTextBeginHight(Value: Integer);
    procedure SetColor1(Value: TColor);
    procedure SetColor2(Value: TColor);
    procedure SetPanelColorTop1(Value: TColor);
    procedure SetPanelColorTop2(Value: TColor);
    procedure SetPanelColorBottom1(Value: TColor);
    procedure SetPanelColorBottom2(Value: TColor);
    procedure SetPanelColorRight1(Value: TColor);
    procedure SetPanelColorRight2(Value: TColor);
    procedure SetPanelColorLeft1(Value: TColor);
    procedure SetPanelColorLeft2(Value: TColor);
    procedure SetGradient(Value: gradient);
    procedure SetShowPanelTop(Value: Boolean);
    procedure SetShowPanelLeft(Value: Boolean);
    procedure SetShowPanelRight(Value: Boolean);
    procedure SetShowPanelBottom(Value: Boolean);
    procedure SetCaption(Value: TCaption);
    procedure SetBorder(Value: Boolean);
    procedure SetBorderColor(Value: TColor);
    procedure SetLines(Value: TStrings);
    procedure SetSpeedx(Value: Integer);
    procedure SetSpeedy(Value: Integer);
    procedure SetSpReversex(Value: Boolean);
    procedure SetSpReversey(Value: Boolean);
    procedure SetScroll(Value: Boolean);
    procedure TimerAction(Sender: TObject);
    procedure PaintText;

  protected
    { Protected-Deklarationen }

    procedure SetTextWidth;
    procedure DrawGradientV(bmp32: TBitMap32; Color1, Color2: TColor; Rect: TRect; Alpha: Integer; Blend: blendmode);
    procedure DrawGradientH(bmp32: TBitMap32; Color1, Color2: TColor; Rect: TRect; Alpha: Integer; Blend: blendmode);
    procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
    procedure Paint; override;

  public
    { Public-Deklarationen }

    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    
  published
    { Published-Deklarationen }
    property TextPosL: Integer read FTextPosFromLeft write SetTextPosFromLeft;
    property TextPosT: Integer read FTextBeginHight write SetTextBeginHight;
    property Color1: TColor read FColor1 write SetColor1;
    property Color2: TColor read FColor2 write SetColor2;
    property PanelColorTop1: TColor read FPanelColorTop1 write SetPanelColorTop1;
    property PanelColorTop2: TColor read FPanelColorTop2 write SetPanelColorTop2;
    property PanelColorBottom1: TColor read FPanelColorBottom1 write SetPanelColorBottom1;
    property PanelColorBottom2: TColor read FPanelColorBottom2 write SetPanelColorBottom2;
    property PanelColorRight1: TColor read FPanelColorRight1 write SetPanelColorRight1;
    property PanelColorRight2: TColor read FPanelColorRight2 write SetPanelColorRight2;
    property PanelColorLeft1: TColor read FPanelColorLeft1 write SetPanelColorLeft1;
    property PanelColorLeft2: TColor read FPanelColorLeft2 write SetPanelColorLeft2;
    property Gradient: gradient read FGradient write SetGradient;
    property ShowPanelTop: Boolean read FShowPanelTop write SetShowPanelTop;
    property ShowPanelLeft: Boolean read FShowPanelLeft write SetShowPanelLeft;
    property ShowPanelRight: Boolean read FShowPanelRight write SetShowPanelRight;
    property ShowPanelBottom: Boolean read FShowPanelBottom write SetShowPanelBottom;
    property Caption: TCaption read FCaption write SetCaption;
    property Lines: TStrings read FLines write SetLines;
    property Speedx: Integer read FSpeedx write SetSpeedx;
    property Speedy: Integer read FSpeedy write SetSpeedy;
    property SpReversex: Boolean read FSpReversex write SetSpReversex;
    property SpReversey: Boolean read FSpReversey write SetSpReversey;
    property Scroll: Boolean read FScroll write SetScroll;
    property ShowBorder: Boolean read FBorder write SetBorder;
    property BorderColor: TColor read FBorderColor write SetBorderColor;

    property Font;
    property Anchors;
    property Action;
    property Align;
    property BiDiMode;
    property DragCursor;
    property DragKind;
    property DragMode;
    property ParentBiDiMode;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Visible;

    property OnClick;

  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('enemyleft', [TSSText]);
end;

constructor TSSText.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);

 DoubleBuffered := true; // Ohne DoubleBuffer würde das ganz schön flackern!
 Width := 200;
 Height := 100;

 FColor1 := clBtnFace;
 FColor2 := clBtnFace;
 FPanelColorTop1 := clBtnFace;
 FPanelColorTop2 := clBtnFace;
 FPanelColorBottom1 := clBtnFace;
 FPanelColorBottom2 := clBtnFace;
 FPanelColorRight1 := clBtnFace;
 FPanelColorRight2 := clBtnFace;
 FPanelColorLeft1 := clBtnFace;
 FPanelColorLeft2 := clBtnFace;
 FGradient := grNone;
 FShowPanelTop := True;
 FShowPanelLeft := False;
 FShowPanelRight := False;
 FShowPanelBottom := True;
 FBorder := False;
 FBorderColor := clWindowText;

 FLines := TStringList.Create;
 FLines.Add('#enemyleft');
 TextWidth := 100;

 FTextPosFromLeft := 10;
 FTextBeginHight := 20;
 tx := FTextBeginHight;
 ty := FTextPosFromLeft;
 FScroll := False;
 FSpeedx := 1;
 FSpeedy := 0;
 FSpReversex := False;
 FSpReversey := False;

 ScrollTimer := TTimer.Create(Self);
 ScrollTimer.Interval := 100;
 ScrollTimer.OnTimer := TimerAction;
 ScrollTimer.Enabled := FScroll;

 pb := TPaintBox32.Create(Self);
 pb.Parent := Self;
 pb.Width := Width;
 pb.Height := Height;

 bmp32 := TBitmap32.Create;
 bmp32.Width := pb.Width;
 bmp32.Height := pb.Height;
end;

destructor TSSText.Destroy;
begin
 inherited Destroy;
end;

procedure TSSText.DrawGradientV(bmp32: TBitMap32; Color1, Color2: TColor; Rect: TRect; Alpha: Integer; Blend: blendmode);
var
 i, R, G, B: Integer;
 blender: Integer;
 col32: TColor32;
begin

 blender := 255 div (Rect.Right - Rect.Left);

 Color1 := ColorToRGB(Color1);
 Color2 := ColorToRGB(Color2);

 for i := 0 to (Rect.Right - Rect.Left) - 1 do
 begin

  R := GetRValue(Color1) - (((GetRValue(Color1) - GetRValue(Color2)) * I) DIV (Rect.Right - Rect.Left));
  G := GetGValue(Color1) - (((GetGValue(Color1) - GetGValue(Color2)) * I) DIV (Rect.Right - Rect.Left));
  B := GetBValue(Color1) - (((GetBValue(Color1) - GetBValue(Color2)) * I) DIV (Rect.Right - Rect.Left));

  col32 := Color32(R,G,B,Alpha);
  bmp32.LineAs(Rect.Left + I, Rect.Top, Rect.Left + I, Rect.Bottom, col32);

  if Blend = bmIn then
  begin
    Alpha := Alpha - blender;
    if Alpha < 0 then
      Alpha := 0;
  end
  else if Blend = bmOut then
  begin
    Alpha := Alpha + blender;
    if Alpha > 255 then
      Alpha := 255;
  end;
 end;
end;

procedure TSSText.DrawGradientH(bmp32: TBitMap32; Color1, Color2: TColor; Rect: TRect; Alpha: Integer; Blend: blendmode);
var
 i, R, G, B: Integer;
 blender: Integer;
 col32: TColor32;
begin

 blender := 255 div (Rect.Bottom - Rect.Top);

 Color1 := ColorToRGB(Color1);
 Color2 := ColorToRGB(Color2);

 for i := 0 to (Rect.Bottom - Rect.Top) - 1 do
 begin

  R := GetRValue(Color1) - (((GetRValue(Color1) - GetRValue(Color2)) * I) DIV (Rect.Bottom - Rect.Top));
  G := GetGValue(Color1) - (((GetGValue(Color1) - GetGValue(Color2)) * I) DIV (Rect.Bottom - Rect.Top));
  B := GetBValue(Color1) - (((GetBValue(Color1) - GetBValue(Color2)) * I) DIV (Rect.Bottom - Rect.Top));

  col32 := Color32(R,G,B,Alpha);
  bmp32.LineAs(Rect.Left, Rect.Top + I, Rect.Right, Rect.Top + I, col32);

  if Blend = bmIn then
  begin
    Alpha := Alpha - blender;
    if Alpha < 0 then
      Alpha := 0;
  end
  else if Blend = bmOut then
  begin
    Alpha := Alpha + blender;
    if Alpha > 255 then
      Alpha := 255;
  end;
 end;
end;

procedure TSSText.TimerAction(Sender: TObject);
begin
  // move text up / down
  if not FSpReverseX then
  begin
    if tx <= 0 - Canvas.TextHeight(FLines.Strings[0]) * FLines.Count then
      tx := Height;
    tx := tx - FSpeedx
  end
  else
  begin
    if tx >= Height then
      tx := 0 - Canvas.TextHeight(FLines.Strings[0]) * FLines.Count;
    tx := tx + FSpeedx
  end;
  // move text left / right
  if not FSpReverseY then
  begin
    if ty >= Width then
      ty := 0 - TextWidth;
    ty := ty + FSpeedy
  end
  else
  begin
    if ty <= 0 - TextWidth then
      ty := Width;
    ty := ty - FSpeedy
  end;
  // repaint
  Repaint;
end;

procedure TSSText.PaintText;
var
  I: Integer;
begin
  if FLines.Count > 0 then
  begin
    bmp32.Canvas.Font.Assign(Font);
    bmp32.Canvas.Brush.Style := bsClear;
    for I := 0 to FLines.Count -1 do
      bmp32.Canvas.TextOut(ty, tx + bmp32.Canvas.TextHeight(FLines.Strings[0]) * I, FLines.Strings[I]);
  end;
end;

procedure TSSText.Paint;
var
  Rect1,Rect2,Rect3,Rect4,Rect5: TRect;
begin

  pb.width := Width;
  pb.Height := Height;

  bmp32.Width := pb.Width;
  bmp32.Height := pb.Height;

  // übergabeparameter Rect bereitstellen,
  // wenn Verlauf ausgewählt
  if Gradient <> grNone then
  begin
   Rect1.Left := 0;
   Rect1.Top := 0;
   Rect1.Right := Width;
   Rect1.Bottom := height;
   // Verlauf herstellen
   if (FGradient = grTopToBottom) then
     DrawGradientH(bmp32, FColor1, FColor2, Rect1, 255, bmNone)
   else if (FGradient = grLeftToRight) then
     DrawGradientV(bmp32, FColor1, FColor2, Rect1, 255, bmNone)
  end
  else
  begin
   bmp32.Canvas.Pen.Color := FColor1;
   bmp32.Canvas.Brush.Style := bsSolid;
   bmp32.Canvas.Brush.Color := FColor1;
   bmp32.Canvas.Rectangle(0,0,Width,Height);
  end;

  {panel gradient for blending: TOP}
  with Rect2 do
  begin
    Left := 0;
    Top := 0;
    Right := Width;
    Bottom := 51;
  end;
  {panel gradient for blending: BOTTOM}
  with Rect3 do
  begin
    Left := 0;
    Top := Height-51;
    Right := Width;
    Bottom := Height;
  end;
  {panel gradient: LEFT}
  with Rect4 do
  begin
    Left := 0;
    Top := 0;
    Right := 51;
    Bottom := Height;
  end;
  {panel gradient: RIGHT}
  with Rect5 do
  begin
    Left := Width-51;
    Top := 0;
    Right := Width;
    Bottom := Height;
  end;

  PaintText;

  {TOP blending}
  if FShowPanelTop then
    DrawGradientH(bmp32, FPanelColorTop1, FPanelColorTop2, Rect2, 255, bmIn);
  {BOTTOM blending}
  if FShowPanelBottom then
    DrawGradientH(bmp32, FPanelColorBottom1, FPanelColorBottom2, Rect3, 0, bmOut);
  {LEFT panel}
  if FShowPanelLeft then
    DrawGradientV(bmp32, FPanelColorLeft1, FPanelColorLeft2, Rect4, 255, bmIn);
  {RIGHT panel}
  if FShowPanelRight then
    DrawGradientV(bmp32, FPanelColorRight1, FPanelColorRight2, Rect5, 0, bmOut);

  // Rand Zeichnen
  if (FBorder) then
  begin
   bmp32.Canvas.Pen.Color := ColorToRGB(FBorderColor);
   bmp32.Canvas.Brush.Style := bsClear;
   bmp32.Canvas.Rectangle(0,0,Width,Height);
  end;

  pb.Buffer.Assign(bmp32);

end;

procedure TSSText.SetTextWidth;
var
  I: Integer;
begin
  for I := 0 to Lines.Count - 1 do
    if TextWidth < Canvas.TextWidth(FLines.Strings[I]) then
      TextWidth := Canvas.TextWidth(FLines.Strings[I]);
end;

procedure TSSText.SetColor1(Value: TColor);
begin
 if (FColor1 <> Value) then
 begin
  FColor1 := Value;
  RePaint;
 end;
end;

procedure TSSText.SetPanelColorTop1(Value: TColor);
begin
 if (FPanelColorTop1 <> Value) then
 begin
  FPanelColorTop1 := Value;
  RePaint;
 end;
end;

procedure TSSText.SetPanelColorTop2(Value: TColor);
begin
 if (FPanelColorTop2 <> Value) then
 begin
  FPanelColorTop2 := Value;
  RePaint;
 end;
end;

procedure TSSText.SetPanelColorBottom1(Value: TColor);
begin
 if (FPanelColorBottom1 <> Value) then
 begin
  FPanelColorBottom1:= Value;
  RePaint;
 end;
end;

procedure TSSText.SetPanelColorBottom2(Value: TColor);
begin
 if (FPanelColorBottom2 <> Value) then
 begin
  FPanelColorBottom2:= Value;
  RePaint;
 end;
end;
procedure TSSText.SetColor2(Value: TColor);
begin
 if (FColor2 <> Value) then
 begin
  FColor2 := Value;
  RePaint;
 end;
end;

procedure TSSText.SetGradient(Value: gradient);
begin
 if (FGradient <> Value) then
 begin
  FGradient := Value;
  RePaint;
 end;
end;

procedure TSSText.CMTextChanged(var Message: TMessage);
begin
 FCaption := Name;
end;

procedure TSSText.SetCaption(Value: TCaption);
begin
 if (FCaption <> Value) then
 begin
  FCaption := Value;
  RePaint;
 end;
end;

procedure TSSText.SetBorder(Value: Boolean);
begin
 if (FBorder <> Value) then
 begin
  FBorder := Value;
  RePaint;
 end;
end;

procedure TSSText.SetBorderColor(Value: TColor);
begin
 if (FBorderColor <> Value) then
 begin
  FBorderColor := Value;
  RePaint;
 end;
end;

procedure TSSText.SetLines(Value: TStrings);
begin
  if (FLines <> Value) then
  begin
    FLines.Assign(Value);
    SetTextWidth;
    RePaint;
  end;
end;

procedure TSSText.SetSpeedx(Value: Integer);
begin
  if (FSpeedx <> Value) then
    FSpeedx := Value;
end;

procedure TSSText.SetSpeedy(Value: Integer);
begin
  if (FSpeedy <> Value) then
    FSpeedy := Value;
end;

procedure TSSText.SetScroll(Value: Boolean);
begin
  if (FScroll <> Value) then
  begin
    FScroll := Value;
    ScrollTimer.Enabled := FScroll;
  end;
end;

procedure TSSText.SetPanelColorRight1(Value: TColor);
begin
  if (FPanelColorRight1 <> Value) then
  begin
    FPanelColorRight1 := Value;
    Repaint;
  end;
end;

procedure TSSText.SetPanelColorRight2(Value: TColor);
begin
  if (FPanelColorRight2 <> Value) then
  begin
    FPanelColorRight2 := Value;
    Repaint;
  end;
end;

procedure TSSText.SetPanelColorLeft1(Value: TColor);
begin
  if (FPanelColorLeft1 <> Value) then
  begin
    FPanelColorLeft1 := Value;
    Repaint;
  end;
end;

procedure TSSText.SetPanelColorLeft2(Value: TColor);
begin
  if (FPanelColorLeft2 <> Value) then
  begin
    FPanelColorLeft2 := Value;
    Repaint;
  end;
end;

procedure TSSText.SetShowPanelTop(Value: Boolean);
begin
  if (FShowPanelTop <> Value) then
  begin
    FShowPanelTop := Value;
    Repaint;
  end;
end;

procedure TSSText.SetShowPanelLeft(Value: Boolean);
begin
  if (FShowPanelLeft <> Value) then
  begin
    FShowPanelLeft := Value;
    Repaint;
  end;
end;

procedure TSSText.SetShowPanelRight(Value: Boolean);
begin
  if (FShowPanelRight <> Value) then
  begin
    FShowPanelRight := Value;
    Repaint;
  end;
end;

procedure TSSText.SetShowPanelBottom(Value: Boolean);
begin
  if (FShowPanelBottom <> Value) then
  begin
    FShowPanelBottom := Value;
    Repaint;
  end;
end;

procedure TSSText.SetTextPosFromLeft(Value: Integer);
begin
  if (FTextPosFromLeft <> Value) then
  begin
    FTextPosFromLeft := Value;
    Repaint;
  end;
end;

procedure TSSText.SetTextBeginHight(Value: Integer);
begin
  if (FTextBeginHight <> Value) then
  begin
    FTextBeginHight := Value;
    tx := FTextBeginHight;
    Repaint;
  end;
end;

procedure TSSText.SetSpReversex(Value: Boolean);
begin
  if (FSpReverseX <> Value) then
    FSpReverseX := Value;
end;

procedure TSSText.SetSpReversey(Value: Boolean);
begin
  if (FSpReverseY <> Value) then
    FSpReverseY := Value;
end;

end.
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Event wird nicht gefeuert- eigene Komponente

  Alt 28. Mai 2009, 11:47
Hallo Cherry,

Dein Click Ereignis sollte funktionieren, da du es ja nicht überschreibst um Aktionen innerhalb der Komponente auszulösen.
Mir ist aufgefallen,dass du im Destroyer die Objekte welche du im Constructer erstellst nicht wieder frei gibst.

Gruss Dieter
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: Event wird nicht gefeuert- eigene Komponente

  Alt 28. Mai 2009, 12:06
Zitat von Optiplex:
Dein Click Ereignis sollte funktionieren, da du es ja nicht überschreibst um Aktionen innerhalb der Komponente auszulösen.
Ja eben! Es funktioniert aber nicht. Oder gehts bei dir etwa?

Zitat von Optiplex:
Mir ist aufgefallen,dass du im Destroyer die Objekte welche du im Constructer erstellst nicht wieder frei gibst.
Oops.. ja danke
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#4

Re: Event wird nicht gefeuert- eigene Komponente

  Alt 28. Mai 2009, 13:40
Ich weiss nicht, aber irgendwie hilft es mir meine Probleme hier zu posten, obwohl ich schon wieder selber auf die Lösung gekommen bin

Nun ich habe die Komponente von TCustomControl abgeleitet und dan eine TPaintBox32 über die Komponente gelegt. Dadruch funktionierte zwar das OnClick Ereignis eigentlich schon, aber ich kann ja gar nicht auf meine eigentliche Komponente klicken, denn da ist ja immer die PaintBox im weg *lol*

Also habe ich die Komponente jetzt von TPaintBox32 abgeleitet, was ohnehin schon mal viel schöner ist!

PS: Das ganze Package gibts bei OpenSource unteranderem ist dort auch nocht ein Color Button enthalten...
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Event wird nicht gefeuert- eigene Komponente

  Alt 28. Mai 2009, 14:08
Mir ist nur noch aufgefallen das du das Property Caption unnötigerweise doppelt setzt, wenn du schon CMTextChanged auswertest dann brauchst du auch nicht noch mal eine procedure setcaption da CMTextChance direkt das Caption neu zeichnen kann.

procedure CMTextChanged( var msg:TMessage);
begin
interited
repaint
end;

willst du den Namen der Komponente im Editor ausgeben willst dann im Paint Ereignis mit Componentstate auswerten.

Dieter
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Event wird nicht gefeuert- eigene Komponente

  Alt 28. Mai 2009, 14:16
Hi cherry,

schön, dass du deinen gesamten Code hier postest, aber wiederum kein Wunder, dass du den Fehler zuerst findest. Erstens ist mir das zu viel zum durchsehen, da clicke ich den Thread erst mal wieder weg. Selbst wenn, bist du eher schneller in deinem Code, bis ein anderer da durch ist. Lass in Zukunft den unwichtigen Rest weg. Mit dem Constructor, den embedded Components in deinem CustomControl und der Fehlerbeschreibung währe es schneller gegangen. Dann hätte auch ich dir sagen können, dass deine Paintbox das OnClick erhält.

Nichts für ungut.

Dann noch mal zum Code. Mir ist nicht ganz klar, warum du beim Platzieren deiner neuen Komponente keine Fehlrmeldung bekommst. Du weist deiner PaintBox im Create deines CustomControl den Parent self zu. Das geht definitiv schief. Zu dieser Zeit hat das CustomControl noch kein Handle.

Gruß oki
42
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:09 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