Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bottom und Right für alle graphischen Componenten (https://www.delphipraxis.net/14361-bottom-und-right-fuer-alle-graphischen-componenten.html)

F.W. 7. Jan 2004 18:15


Bottom und Right für alle graphischen Componenten
 
Ich achte bei meinen Programmen immer auf die gleichmäßige Platzierung (Abstand zwischen Objekten...).

Ich würde gern allen Objekten, die über die Eigenschaft Top und Left, sowie Width und Height verfügen eine Eigenschaft Right und Bottom geben.
Das muss nur eine Nurlesen-Eigenschaft sein, würde sich dann jeweils aus Top+Height bzw.Left+Width zusammen setzen. Das ist nur damit das Platzieren ein Bisschen schneller geht.

Jetzt treten aber 2 Probleme auf:
1. Ich hab das noch nie gemacht, denke aber, dass ich es möglicher Weise allein hinbekomme
2. Das wichtigere: Ich weiß nicht wo ich da was hinschreiben soll

Danke schonmal im Voraus!

scp 7. Jan 2004 19:01

Re: Bottom und Right für alle graphischen Componenten
 
Da müsstest du dir jeweils eine eigene Komponente ableiten, etwa so:

Delphi-Quellcode:
//...

interface

type
  TMyEdit = class(TEdit)
  protected
    function GetRight : Integer;
    function GetBottom : Integer;
  published
    property Right : Integer; read GetRight;
    property Bottom : Integer; read GetBottom;
  end;

procedure Register;

implementation

function TMyEdit.GetRight : Integer;
begin
  result := Width + Left;
end;

function TMyEdit.GetBottom : Integer;
begin
  result := Height + Top;
end;

procedure Register;
begin
  RegisterComponents('MyCompos', [TMyEdit]);
end;

F.W. 7. Jan 2004 19:24

Re: Bottom und Right für alle graphischen Componenten
 
1. Bekomme ich dann eine Componente in der Componentepalette dazu?
2. Muss ich das in jedem Projekt, das ich anlege dazuschreiben?

Kann man nicht einfach dort, wo die "echten" Delphi Componenten ihre Sachen stehen haben das noch anfügen?

Weil ich das ja dann nicht nur für das Edit brauche, sondern für soziemlich alles.

Stanlay Hanks 7. Jan 2004 19:43

Re: Bottom und Right für alle graphischen Componenten
 
Wenn du die Komponente nachdem du sie erstellt hast, installierst, bekommst du eine neue Komponente in die Komponentenpalette.

Du könntest denke ich schon die Delphi Kompos umschreiben, aber ich würde dir das nicht umbedingt empfehlen. Wenn du dann nen Fehler machst, sind das nur zusätliche Umstände. :wink:
Wenn du hingegen eine extra Komponente ableitest (Siehe hierzu das Komponenten Tutorial von Sakura oder auf www.delphi-source.de die Tutorials) ist das alles viel übersichtlicher.

Man liest sich, Stanlay :hi:

scp 7. Jan 2004 19:55

Re: Bottom und Right für alle graphischen Componenten
 
1. Ja, wenn du die komponente über Komponente -> Komponente installieren... registrierst.
2. Was meinst du mit dazuschreiben??? Wenn du die Komponente aus der Palette auf deine Form holst, dann schreibt er doch automatisch alles rein.

Das ist ja das Problem:
Den Quelltext der Original-Komponenten zu verändern, ist fast das schlimmste, was man machen kann. Deshalb musst du jede Kompo, die das haben soll ableiten.

Oder du machst es anders:
Delphi-Quellcode:
function GetBottom(AControl : TControl) : Integer;
begin
  result := AControl.Height + AControl.Top;
end;
So kannst du von jeder beliebiegen Compo, die von TControl abgeleitet ist (sind ziemlich viele), denn Bottom über die Funktion abrufen.
Z.B.:
Delphi-Quellcode:
i := GetBottom(Edit1);

F.W. 7. Jan 2004 20:20

Re: Bottom und Right für alle graphischen Componenten
 
Mit dazuschreiben meinte ich, ob ich die Komponente jedesmal neu ableiten muss(also immer in den interface Abschnitt type... property...). Ok!

Sind bei den ganzen Wegen auch immer die Eigenschaften(Bottom und Right) im Objekt inspector zusehen?

Stanlay Hanks 7. Jan 2004 20:24

Re: Bottom und Right für alle graphischen Componenten
 
Wenn die Eigenschaften Published deklariert werden, schon.

Was mir grade aufgefallen ist. Der Titel deines Threads sagt "alle graphischen Komponenten".
Bitte jetzt nicht auf die Idee kommen, TControl zu verändern...das kann richtig in die Hose gehen. :pale:

Man liest sich, Stanlay :hi:

Robert_G 7. Jan 2004 21:05

Re: Bottom und Right für alle graphischen Componenten
 
Oops, hätte mal die vorherigen Posts lesen sollen :oops:

woki 7. Jan 2004 21:09

Re: Bottom und Right für alle graphischen Componenten
 
Hi,

wenn Du neue Komponenten ableitest, verwendest Du die genauso wie du Komponenten jetzt auch verwendest, mußt auch nichts dazuschreiben.

Überleg Dir mal, ob nicht die Verwendung der Ausrichtngspalette das beste Aufwands - Leistungsverhältnis für dich bietet.

Eine Alternative wäre noch, eine Komponente zu bauen, die die Plazierung nach Deinen Vorstellungen übernimmt.

Auf jeden Fall solltest Du davon Abstand nehmen, die Borlandsourcen zu verändern, überleg mal was daa bedeutet. Nach jedem Update, jeder Neuinstallation mußt du die Änderungen neu einarbeiten, darfst dabei nichts vergessen, sie wirken sich auf alle davon abgeleiteten Komponenten aus, niemand sonst kann mit diesen Sourcen sinnvoll arbeiten können - das wäre wirklich schlechter Stil.

Grüsse
Woki

scp 7. Jan 2004 22:17

Re: Bottom und Right für alle graphischen Componenten
 
Zitat:

Zitat von F.W.
Sind bei den ganzen Wegen auch immer die Eigenschaften(Bottom und Right) im Objekt inspector zusehen?

Jepp, wenn du die allererste Methode anwendest (ableiten), dann schon.
Allerdings, wie oben schon gesagt, es mus dann in published stehen, nicht in public, habs verwechselt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 Uhr.
Seite 1 von 2  1 2      

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