| 
| Autor | Beitrag |  
| NOS 
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Mi 18.08.10 13:46 
 
Hallo zusammen,
 ich habe im prinzip ein simples problem ... ich habe mir von tpanel eine komponente abgeleitet und will da nun einiges ändern .... nun suche ich den source des original tpanel sprich die extctrls.pas aber find esie nicht .... sort will ich ein wenig schauen wie einige dinge gemacht wurden da ich auf dem gebiet absoluter neuling  bin ... ich habe meinen ganzen rechner abgesucht aber nichts gefunden 
 ich hoffe ihr könnt helfen 
 LG,
 AndreasModeriert von  Narses: Topic aus Sonstiges (Delphi) verschoben am Mi 18.08.2010 um 18:37 |  |  |  
| Teekeks 
          Beiträge: 211
 Erhaltene Danke: 23
 
 
 
 
 | 
Verfasst: Mi 18.08.10 13:56 
 
VL. einfach mal die Unit extctrls bei Delphi einbinden und dann ein [Strg]+[Linksklick] auf die Unit.
 Die könnte auch z.B. extctrls.pp heißen, das ist die andere erlaubte Endung von Pascal...
 |  |  |  
| Xion 
          
  Beiträge: 1952
 Erhaltene Danke: 128
 
 Windows XP
 Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse),  C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
 
 | 
Verfasst: Mi 18.08.10 15:58 
 
*Kopfkratz* Du hast da ja ne Menge Delphi-Versionen angeben, die du verwendest    Bei Delphi 2005 gehe man so vor:
 TPanel eintippen
 Cursor drauf platzieren
 Strg+CursorUp drücken
 Funktioniert bei mir._________________a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius) |  |  |  
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Mi 18.08.10 17:16 
 
Ups,
 also beide Varianten funktionieren nicht .... ich nutze Delphi 2010 aber ich komme nicht an den Source des TPanel ... habe nach extctrls.pas gesucht ... .habe nach extctrls.* gesucht etc. ... nicht zu machen .... delphi intern gehts auch nicht
 HILFE   Moderiert von  Narses: Selbst-Zitat des ersten Beitrags entfernt. |  |  |  
| elundril 
          Beiträge: 3747
 Erhaltene Danke: 123
 
 Windows Vista, Ubuntu
 Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
 
 | 
Verfasst: Mi 18.08.10 21:47 
 
Bei manchen Versionen sind die Quellcode-Dateien der Komponenten nicht als Sourcecode dabei sondern nur als DCU, also schon kompilierte Delphi-Unit. Ein Umweg wäre vl. die Jedis runterladen und dann im Sourcecode vom TJvPanel reinschauen, die liefern nämlich den Quelltext mit.    lg elundril_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
 |  |  |  
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Mi 18.08.10 23:58 
 
	  |  elundril hat folgendes geschrieben  : |  	  | Bei manchen Versionen sind die Quellcode-Dateien der Komponenten nicht als Sourcecode dabei sondern nur als DCU, also schon kompilierte Delphi-Unit. Ein Umweg wäre vl. die Jedis runterladen und dann im Sourcecode vom TJvPanel reinschauen, die liefern nämlich den Quelltext mit.   
 lg elundril
 | 
 Hi ...
 leider hilft mir das nicht wirklich .... ich glaube ich muss mal etwas weiter ausholen .... ich haben mir 2 komponenten von TPanel vererbt ... die eine ist ein nenen wir es mal basepanel .... nun möchte ich das das andere panel, nennen wir es mal droppanel auf das erste gedroppt werden kann .... also das quasi das basepanel automatisch den typ des droppanel erkennt und auch nur das akzeptiert ... nach dem droppen soll das basepanel das droppanel in einer liste führen und dieses so selectabel machen etc.
 Ich hoffe das hilft mehr ... ich dachte diese basic informations könnte ich dem source des tpanel entnehmen ... aber da ich das nicht finde hoffe ich nun auf hilfe im bezug auf das eigentliche problem    LG,
 Andreas |  |  |  
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Do 19.08.10 00:13 
 
Wenn du eine Trial-Version hast oder eine solche freigeschaltet hast, ist der Quelltext nicht dabei. Nach der Registrierung gibt es den aber glaube ich zum Download für die Käufer, auf jeden Fall kannst du AFAIK eine komplette Version herunterladen, bei der der dabei ist. |  |  |  
| elundril 
          Beiträge: 3747
 Erhaltene Danke: 123
 
 Windows Vista, Ubuntu
 Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
 
 | 
Verfasst: Do 19.08.10 00:16 
 
Wozu aber der Quelltext? Brauchst du nicht einfach nur TBasepanel um ein Arrayfeld (+Methoden) zu erweitern und das DragOver/EndDrag/DragDrop zu überschreiben?
 lg elundril
 _________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
 |  |  |  
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Do 19.08.10 10:17 
 
	  |  elundril hat folgendes geschrieben  : |  	  | Wozu aber der Quelltext? Brauchst du nicht einfach nur TBasepanel um ein Arrayfeld (+Methoden) zu erweitern und das DragOver/EndDrag/DragDrop zu überschreiben? 
 lg elundril
 | 
 ja .... so ist es ... aber ohne erfahrungen wäre einmal quellcode schauen schon traumhaft    ---Moderiert von  Narses: Beiträge zusammengefasst ---
 	  |  jaenicke hat folgendes geschrieben  : |  	  | Wenn du eine Trial-Version hast oder eine solche freigeschaltet hast, ist der Quelltext nicht dabei. Nach der Registrierung gibt es den aber glaube ich zum Download für die Käufer, auf jeden Fall kannst du AFAIK eine komplette Version herunterladen, bei der der dabei ist. | 
 ich habe ein original Delphi 2010 ... drum wundert es mich ja ... bisher ist mri das noch nie so aufgefallen da ich nie in den originalsourcen rumgebastelt habe ... |  |  |  
| platzwart 
          Beiträge: 1054
 Erhaltene Danke: 78
 
 Win 7, Ubuntu 9.10
 Delphi 2007 Pro, C++, Qt
 
 | 
Verfasst: Do 19.08.10 10:50 
 
Das "Rumbasteln" an den Originalsourcen solltest du auch tunlichst unterlassen!!! Nachschaun, wie die Funktionen implementiert sind, ist ja ganz net, aber editieren... _________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
 |  |  |  
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Do 19.08.10 12:53 
 |  |  |  
| FinnO 
          Beiträge: 1331
 Erhaltene Danke: 123
 
 Mac OSX, Arch
 TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
 
 | 
Verfasst: Do 19.08.10 16:43 
 
kannst du nicht einfach auf das TPanel in deiner Klassendeklaration rechtsklicken und "Deklaration suchen"? |  |  |  
| Xion 
          
  Beiträge: 1952
 Erhaltene Danke: 128
 
 Windows XP
 Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse),  C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
 
 | 
Verfasst: Do 19.08.10 16:53 
 
Bevor das Thema noch fünfmal im Kreis geht, hier der Ausschnitt aus der Unit:
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
 100:
 101:
 102:
 103:
 104:
 105:
 106:
 107:
 108:
 109:
 110:
 111:
 112:
 113:
 114:
 115:
 116:
 117:
 118:
 119:
 120:
 121:
 122:
 123:
 124:
 125:
 126:
 127:
 128:
 129:
 130:
 131:
 132:
 133:
 134:
 135:
 136:
 137:
 138:
 139:
 140:
 141:
 142:
 143:
 144:
 145:
 146:
 147:
 148:
 149:
 150:
 151:
 152:
 153:
 154:
 155:
 156:
 157:
 158:
 159:
 160:
 161:
 162:
 163:
 164:
 165:
 166:
 167:
 168:
 169:
 170:
 171:
 172:
 173:
 174:
 175:
 176:
 177:
 178:
 179:
 180:
 181:
 182:
 183:
 184:
 185:
 186:
 187:
 188:
 189:
 190:
 191:
 192:
 193:
 194:
 195:
 196:
 197:
 198:
 199:
 200:
 201:
 202:
 203:
 204:
 205:
 206:
 207:
 208:
 209:
 210:
 211:
 212:
 213:
 214:
 215:
 216:
 217:
 218:
 219:
 220:
 221:
 222:
 223:
 224:
 225:
 226:
 227:
 228:
 229:
 230:
 231:
 232:
 233:
 234:
 235:
 236:
 237:
 238:
 239:
 240:
 241:
 242:
 243:
 244:
 245:
 246:
 247:
 248:
 249:
 250:
 251:
 252:
 253:
 254:
 255:
 256:
 257:
 258:
 259:
 260:
 261:
 262:
 263:
 264:
 265:
 266:
 267:
 268:
 269:
 270:
 271:
 272:
 273:
 274:
 275:
 276:
 277:
 278:
 279:
 280:
 281:
 282:
 283:
 284:
 285:
 286:
 287:
 288:
 289:
 290:
 291:
 292:
 293:
 294:
 295:
 296:
 297:
 298:
 299:
 300:
 301:
 302:
 303:
 304:
 305:
 306:
 307:
 308:
 309:
 310:
 311:
 312:
 313:
 314:
 315:
 316:
 317:
 318:
 319:
 320:
 321:
 322:
 323:
 324:
 325:
 326:
 327:
 328:
 329:
 330:
 331:
 332:
 333:
 334:
 335:
 336:
 337:
 338:
 339:
 340:
 341:
 342:
 343:
 344:
 345:
 346:
 347:
 348:
 349:
 350:
 351:
 352:
 353:
 354:
 355:
 356:
 357:
 358:
 359:
 360:
 361:
 362:
 363:
 364:
 365:
 366:
 367:
 368:
 369:
 370:
 371:
 372:
 373:
 374:
 375:
 376:
 377:
 378:
 379:
 380:
 381:
 382:
 383:
 
 |   TCustomPanel = class(TCustomControl)private
 FAutoSizeDocking: Boolean;
 FBevelInner: TPanelBevel;
 FBevelOuter: TPanelBevel;
 FBevelWidth: TBevelWidth;
 FBorderWidth: TBorderWidth;
 FBorderStyle: TBorderStyle;
 FFullRepaint: Boolean;
 FLocked: Boolean;
 FParentBackgroundSet: Boolean;
 FAlignment: TAlignment;
 FVerticalAlignment: TVerticalAlignment;
 procedure CMBorderChanged(var Message: TMessage); message CM_BORDERCHANGED;
 procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
 procedure CMCtl3DChanged(var Message: TMessage); message CM_CTL3DCHANGED;
 procedure CMIsToolControl(var Message: TMessage); message CM_ISTOOLCONTROL;
 procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED;
 procedure SetAlignment(Value: TAlignment);
 procedure SetBevelInner(Value: TPanelBevel);
 procedure SetBevelOuter(Value: TPanelBevel);
 procedure SetBevelWidth(Value: TBevelWidth);
 procedure SetBorderWidth(Value: TBorderWidth);
 procedure SetBorderStyle(Value: TBorderStyle);
 procedure CMDockClient(var Message: TCMDockClient); message CM_DOCKCLIENT;
 procedure SetVerticalAlignment(const Value: TVerticalAlignment);
 protected
 procedure CreateParams(var Params: TCreateParams); override;
 procedure AdjustClientRect(var Rect: TRect); override;
 function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; override;
 procedure Paint; override;
 property Alignment: TAlignment read FAlignment write SetAlignment default taCenter;
 property BevelInner: TPanelBevel read FBevelInner write SetBevelInner default bvNone;
 property BevelOuter: TPanelBevel read FBevelOuter write SetBevelOuter default bvRaised;
 property BevelWidth: TBevelWidth read FBevelWidth write SetBevelWidth default 1;
 property BorderWidth: TBorderWidth read FBorderWidth write SetBorderWidth default 0;
 property BorderStyle: TBorderStyle read FBorderStyle write SetBorderStyle default bsNone;
 property Color default clBtnFace;
 property FullRepaint: Boolean read FFullRepaint write FFullRepaint default True;
 property Locked: Boolean read FLocked write FLocked default False;
 property ParentColor default False;
 property VerticalAlignment: TVerticalAlignment read FVerticalAlignment write SetVerticalAlignment default taVerticalCenter;
 procedure SetParentBackground(Value: Boolean); override;
 public
 property ParentBackground stored FParentBackgroundSet default True;
 constructor Create(AOwner: TComponent); override;
 function GetControlsAlignment: TAlignment; override;
 end;
 
 TPanel = class(TCustomPanel)
 public
 property DockManager;
 published
 property Align;
 property Alignment;
 property Anchors;
 property AutoSize;
 property BevelEdges;
 property BevelInner;
 property BevelKind;
 property BevelOuter;
 property BevelWidth;
 property BiDiMode;
 property BorderWidth;
 property BorderStyle;
 property Caption;
 property Color;
 property Constraints;
 property Ctl3D;
 property UseDockManager default True;
 property DockSite;
 property DragCursor;
 property DragKind;
 property DragMode;
 property Enabled;
 property FullRepaint;
 property Font;
 property Locked;
 property ParentBiDiMode;
 property ParentBackground;
 property ParentColor;
 property ParentCtl3D;
 property ParentFont;
 property ParentShowHint;
 property PopupMenu;
 property ShowHint;
 property TabOrder;
 property TabStop;
 property VerticalAlignment;
 property Visible;
 property OnAlignInsertBefore;
 property OnAlignPosition;
 property OnCanResize;
 property OnClick;
 property OnConstrainedResize;
 property OnContextPopup;
 property OnDockDrop;
 property OnDockOver;
 property OnDblClick;
 property OnDragDrop;
 property OnDragOver;
 property OnEndDock;
 property OnEndDrag;
 property OnEnter;
 property OnExit;
 property OnGetSiteInfo;
 property OnMouseActivate;
 property OnMouseDown;
 property OnMouseMove;
 property OnMouseUp;
 property OnResize;
 property OnStartDock;
 property OnStartDrag;
 property OnUnDock;
 end;
 
 
 
 
 
 constructor TCustomPanel.Create(AOwner: TComponent);
 begin
 inherited Create(AOwner);
 ControlStyle := [csAcceptsControls, csCaptureMouse, csClickEvents,
 csSetCaption, csOpaque, csDoubleClicks, csReplicatable];
 
 if ThemeServices.ThemesEnabled then
 ControlStyle := ControlStyle + [csParentBackground] - [csOpaque];
 Width := 185;
 Height := 41;
 FAlignment := taCenter;
 FVerticalAlignment := taVerticalCenter;
 BevelOuter := bvRaised;
 BevelWidth := 1;
 FBorderStyle := bsNone;
 Color := clBtnFace;
 FFullRepaint := True;
 UseDockManager := True;
 ParentBackground := True;
 end;
 
 procedure TCustomPanel.CreateParams(var Params: TCreateParams);
 const
 BorderStyles: array[TBorderStyle] of DWORD = (0, WS_BORDER);
 begin
 inherited CreateParams(Params);
 with Params do
 begin
 Style := Style or BorderStyles[FBorderStyle];
 if NewStyleControls and Ctl3D and (FBorderStyle = bsSingle) then
 begin
 Style := Style and not WS_BORDER;
 ExStyle := ExStyle or WS_EX_CLIENTEDGE;
 end;
 WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW);
 end;
 end;
 
 procedure TCustomPanel.CMBorderChanged(var Message: TMessage);
 begin
 inherited;
 Invalidate;
 end;
 
 procedure TCustomPanel.CMTextChanged(var Message: TMessage);
 begin
 Invalidate;
 end;
 
 procedure TCustomPanel.CMCtl3DChanged(var Message: TMessage);
 begin
 if NewStyleControls and (FBorderStyle = bsSingle) then RecreateWnd;
 inherited;
 end;
 
 procedure TCustomPanel.CMIsToolControl(var Message: TMessage);
 begin
 if not FLocked then Message.Result := 1;
 end;
 
 procedure TCustomPanel.WMWindowPosChanged(var Message: TWMWindowPosChanged);
 var
 BevelPixels: Integer;
 Rect: TRect;
 begin
 if FullRepaint or (Caption <> '') then
 Invalidate
 else
 begin
 BevelPixels := BorderWidth;
 if BevelInner <> bvNone then Inc(BevelPixels, BevelWidth);
 if BevelOuter <> bvNone then Inc(BevelPixels, BevelWidth);
 if BevelPixels > 0 then
 begin
 Rect.Right := Width;
 Rect.Bottom := Height;
 if Message.WindowPos^.cx <> Rect.Right then
 begin
 Rect.Top := 0;
 Rect.Left := Rect.Right - BevelPixels - 1;
 InvalidateRect(Handle, @Rect, True);
 end;
 if Message.WindowPos^.cy <> Rect.Bottom then
 begin
 Rect.Left := 0;
 Rect.Top := Rect.Bottom - BevelPixels - 1;
 InvalidateRect(Handle, @Rect, True);
 end;
 end;
 end;
 inherited;
 end;
 
 procedure TCustomPanel.Paint;
 const
 Alignments: array[TAlignment] of Longint = (DT_LEFT, DT_RIGHT, DT_CENTER);
 VerticalAlignments: array[TVerticalAlignment] of Longint = (DT_TOP, DT_BOTTOM, DT_VCENTER);
 var
 Rect: TRect;
 TopColor, BottomColor: TColor;
 Flags: Longint;
 
 procedure AdjustColors(Bevel: TPanelBevel);
 begin
 TopColor := clBtnHighlight;
 if Bevel = bvLowered then TopColor := clBtnShadow;
 BottomColor := clBtnShadow;
 if Bevel = bvLowered then BottomColor := clBtnHighlight;
 end;
 
 begin
 Rect := GetClientRect;
 if BevelOuter <> bvNone then
 begin
 AdjustColors(BevelOuter);
 Frame3D(Canvas, Rect, TopColor, BottomColor, BevelWidth);
 end;
 if not (ThemeServices.ThemesEnabled and (csParentBackground in ControlStyle)) then
 Frame3D(Canvas, Rect, Color, Color, BorderWidth);
 if BevelInner <> bvNone then
 begin
 AdjustColors(BevelInner);
 Frame3D(Canvas, Rect, TopColor, BottomColor, BevelWidth);
 end;
 with Canvas do
 begin
 if not ThemeServices.ThemesEnabled or not ParentBackground then
 begin
 Brush.Color := Color;
 FillRect(Rect);
 end;
 Brush.Style := bsClear;
 Font := Self.Font;
 
 Flags := DT_EXPANDTABS or DT_SINGLELINE or
 VerticalAlignments[FVerticalAlignment] or Alignments[FAlignment];
 Flags := DrawTextBiDiModeFlags(Flags);
 DrawText(Handle, PChar(Caption), -1, Rect, Flags);
 end;
 end;
 
 procedure TCustomPanel.SetAlignment(Value: TAlignment);
 begin
 FAlignment := Value;
 Invalidate;
 end;
 
 procedure TCustomPanel.SetBevelInner(Value: TPanelBevel);
 begin
 FBevelInner := Value;
 Realign;
 Invalidate;
 end;
 
 procedure TCustomPanel.SetBevelOuter(Value: TPanelBevel);
 begin
 FBevelOuter := Value;
 Realign;
 Invalidate;
 end;
 
 procedure TCustomPanel.SetBevelWidth(Value: TBevelWidth);
 begin
 FBevelWidth := Value;
 Realign;
 Invalidate;
 end;
 
 procedure TCustomPanel.SetBorderWidth(Value: TBorderWidth);
 begin
 FBorderWidth := Value;
 Realign;
 Invalidate;
 end;
 
 procedure TCustomPanel.SetBorderStyle(Value: TBorderStyle);
 begin
 if FBorderStyle <> Value then
 begin
 FBorderStyle := Value;
 RecreateWnd;
 end;
 end;
 
 function TCustomPanel.GetControlsAlignment: TAlignment;
 begin
 Result := FAlignment;
 end;
 
 procedure TCustomPanel.AdjustClientRect(var Rect: TRect);
 var
 BevelSize: Integer;
 begin
 inherited AdjustClientRect(Rect);
 InflateRect(Rect, -BorderWidth, -BorderWidth);
 BevelSize := 0;
 if BevelOuter <> bvNone then Inc(BevelSize, BevelWidth);
 if BevelInner <> bvNone then Inc(BevelSize, BevelWidth);
 InflateRect(Rect, -BevelSize, -BevelSize);
 end;
 
 procedure TCustomPanel.CMDockClient(var Message: TCMDockClient);
 var
 R: TRect;
 Dim: Integer;
 begin
 if AutoSize then
 begin
 FAutoSizeDocking := True;
 try
 R := Message.DockSource.DockRect;
 case Align of
 alLeft: if Width = 0 then Width := R.Right - R.Left;
 alRight: if Width = 0 then
 begin
 Dim := R.Right - R.Left;
 SetBounds(Left - Dim, Top, Dim, Height);
 end;
 alTop: if Height = 0 then Height := R.Bottom - R.Top;
 alBottom: if Height = 0 then
 begin
 Dim := R.Bottom - R.Top;
 SetBounds(Left, Top - Dim, Width, Dim);
 end;
 end;
 inherited;
 Exit;
 finally
 FAutoSizeDocking := False;
 end;
 end;
 inherited;
 end;
 
 function TCustomPanel.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean;
 begin
 Result := (not FAutoSizeDocking) and inherited CanAutoSize(NewWidth, NewHeight);
 end;
 
 procedure TCustomPanel.SetParentBackground(Value: Boolean);
 begin
 
 if Value then
 ControlStyle := ControlStyle - [csOpaque]
 else
 ControlStyle := ControlStyle + [csOpaque];
 FParentBackgroundSet := True;
 inherited;
 end;
 
 procedure TCustomPanel.SetVerticalAlignment(const Value: TVerticalAlignment);
 begin
 FVerticalAlignment := Value;
 Invalidate;
 end;
 |  Auch wenn ich nicht glaube, dass es dir helfen wird    Die Klasse TCustomControl kommt aus der Unit Controls.
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 
 |   TCustomControl = class(TWinControl)private
 FCanvas: TCanvas;
 procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
 protected
 procedure Paint; virtual;
 procedure PaintWindow(DC: HDC); override;
 property Canvas: TCanvas read FCanvas;
 public
 constructor Create(AOwner: TComponent); override;
 destructor Destroy; override;
 end;
 
 
 
 constructor TCustomControl.Create(AOwner: TComponent);
 begin
 inherited Create(AOwner);
 FCanvas := TControlCanvas.Create;
 TControlCanvas(FCanvas).Control := Self;
 end;
 
 destructor TCustomControl.Destroy;
 begin
 FCanvas.Free;
 inherited Destroy;
 end;
 
 procedure TCustomControl.WMPaint(var Message: TWMPaint);
 begin
 Include(FControlState, csCustomPaint);
 inherited;
 Exclude(FControlState, csCustomPaint);
 end;
 
 procedure TCustomControl.PaintWindow(DC: HDC);
 begin
 FCanvas.Lock;
 try
 FCanvas.Handle := DC;
 try
 TControlCanvas(FCanvas).UpdateTextFlags;
 Paint;
 finally
 FCanvas.Handle := 0;
 end;
 finally
 FCanvas.Unlock;
 end;
 end;
 
 procedure TCustomControl.Paint;
 begin
 end;
 |  Bei TWinControl wirds dann kryptisch...mal kurz überflogen glaube ich dass dort die Hauptarbeit Windows selbst macht._________________a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius) |  |  |  
| NOS  
          Beiträge: 183
 Erhaltene Danke: 2
 
 Win XP, Win Vista Ultimate, Win 7 Ultimate
 Delphi 19.4 - Sydney
 
 | 
Verfasst: Do 19.08.10 17:53 
 
	  |  Xion hat folgendes geschrieben  : |  	  | Bevor das Thema noch fünfmal im Kreis geht, hier der Ausschnitt aus der Unit: | 
 HI HO,
 tausend dank dafür ... das hilft mir super weiter .... ich habe mal embarcadero angetriggert .... bin mal gespannt was di emir sagen bezüglich der version und warum die sourcen da nicht bei sind ....
 many thanks und einen schönen abend noch,
 Andreas |  |  |  |