AGB  ·  Datenschutz  ·  Impressum  







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

Komponente erstellen: Left und Top festlegen?

Ein Thema von Martin K · begonnen am 21. Jun 2006 · letzter Beitrag vom 23. Jun 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Komponente erstellen: Left und Top festlegen?

  Alt 22. Jun 2006, 17:30
Zitat von Hansa:
Echt erstaunlich, daß überhaupt ein Antwortversuch kommt. Denn es wurde nicht mal gesagt, von was die Komponente abgeleitet werden soll. 8) Befürchte es ist wieder mal TComponent oder Co. und insofern dann eigentlich für diese Zwecke nicht zu gebrauchen.
Also, hab meine Komponente vom TImage (ExtCtrls) abgeleitet.

Jetzt weiß ich aber nicht, was du mit dem Rest gemeint hast.
Muss ich die Properties Top und Left überschreiben?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Komponente erstellen: Left und Top festlegen?

  Alt 22. Jun 2006, 17:35
Das Problem ist in der Komponente zu unterscheiden ob die Position gerade gesetzt wurde nach dem die Komponente aufs form gezogen wurde oder die Position gesetzt wurde nachdem das Projekt geladen wurde. Denn wenn du über Datei->öffnen das Projekt lädst soll die Komponente dort erscheinen wo sie beim speichern lag und nicht bei 0, 0
Left und Top überschreibt man in dem man "SetBounds" überschreibt.
Wenn du Left oder Top änderst wird nämlich SetBounds aufgerufen
Anstelle von
Delphi-Quellcode:
img.Left := 0; //intern: img.setbounds(0, img.top, img.width, img.height);
img.Top := 0; //intern: img.setbounds(img.left, 0, img.width, img.height);
sollte man also lieber
img.SetBounds(0, 0, img.width, img.height); aufrufen weil dabei SetBounds nur einmal aufgerufen wird
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Komponente erstellen: Left und Top festlegen?

  Alt 22. Jun 2006, 21:41
So, hab jetzt mal mit meiner Komponente weiter gemacht.

Hab mal Rudy's Code genommen - und es funzt

Damit wäre das Problem dann gelöst

Danke nochmal, für eure Hilfe!
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Komponente erstellen: Left und Top festlegen?

  Alt 23. Jun 2006, 00:13
Hmm...
Hab jetzt mal ein bisschen mit dem Code rumprobiert,
und irgendwie gibt es jetzt beim Beenden immer eine Exception:
Delphi-Quellcode:
procedure TMyCompo.SetParent(AParent: TWinControl);
begin
  inherited;
  SetBounds(AParent.ClientWidth - Width, 0, Width, Height); // oben rechts
end;
Dieser Code funktioniert, hier gibt es keine Exception:
Delphi-Quellcode:
procedure TMyCompo.SetParent(AParent: TWinControl);
begin
  inherited;
  SetBounds(0, 0, Width, Height); // oben links
end;
Wie kann ich es aber erreichen, dass meine Komponente oben rechts plaziert wird, ohne dass es beim Beenden zu einer Exception kommt???
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#15

Re: Komponente erstellen: Left und Top festlegen?

  Alt 23. Jun 2006, 00:17
Prüfe ab, ob AParent Nil ist.

Delphi-Quellcode:
procedure TMyCompo.SetParent(AParent: TWinControl);
begin
  inherited;
  
  If Assigned(AParent) Then
    SetBounds(AParent.ClientWidth - Width, 0, Width, Height); // oben rechts
end;
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Komponente erstellen: Left und Top festlegen?

  Alt 23. Jun 2006, 00:24
Danke, jetzt funktioniert's

Ich verstehe nur nicht, warum es zur Exception beim Beenden kam:
Wann wird denn SetParent aufgerufen?
Eigentlich doch nur beim Createn - aber beim Beenden (also Freigeben)
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Komponente erstellen: Left und Top festlegen?

  Alt 23. Jun 2006, 07:47
beim beenden wird der eventuell auf ni gesetzt damit sich beim Parent aus der Liste ausgetragen wird.
Und der Parent wird natürlich auch gesetzt wenn man die Komponente auf ein andere Panel verschiebt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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