Autor Beitrag
WeissNix
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 19.03.03 11:01 
Hallo,

ich habe mir eine Komponente gebastelt - bestehend aus: Edit, Button und Panel - klicke ich auf den Button, erscheint wie ähnlich der ComboBox das Panel.
Nun habe ich das Problem, dass wenn sich die Componente am Rand des Formulars befindet das Panel im Formular bleibt und Scrollbalken im Formular erscheinen. Wie bekomme ich nun das Panel dazu über das Formular legt (also auch darüber hinaus zeigt). Geht das irgendwie?

Vielen Dank schon mal für eure Hilfe.

Gruß
WeissNix
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 19.03.03 11:34 
Hallo,
warum verwendest du anstelle eines Panels kein Rahmentosen, schwebendes Form?
Mit dem solle es auf jeden Fall gehen.

Gruß
Klabautermann
WeissNix Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 19.03.03 14:24 
Titel: Wie bekomme ich ..
ersmal danke für deine Antwort.

Aber wie bekomme ich das Form dann dazu genau unter dem Editfeld zu erscheinen und nicht irgendwo anders?

Gruß
TischGnom
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 19.03.03 14:36 
Hallo,

mit ClientToScreen kannst du Koordinaten deines Formulars zu Bildschirmkoordinaten umrechnen. Mithilfe dieses Befehls kannst du also die Koordinaten ermitteln, an denen dein Formular erscheinen muss.

Gruß
Klabautermann
WeissNix Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 19.03.03 16:12 
Titel: Klappt nicht so ganz
danke für deine Antwort - soweit funktioniert es außer wenn meine Komponente in einer GroupBox oder auf einem Panel sich befindet (oder auf mehrern Komponenten) - was kann ich da machen, wenn ich nicht vorher weiß ob die Komponente später auf einer anderen Komponente liegt und wenn ja auf wievielen Komponenten.

Gruß
WeissNix
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 19.03.03 16:25 
Hmmm,

Das habe ich jetzt nicht probiert, müsste aber inetwa so gehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
VAR
  Top : LongInt;
  Runner :TComponent;
begin
  Top := Self.Top;
  Runner := Self;
  WHILE NOT (Runner.Parrent IS tForm) AND (Runner.Parrent <> NIL) DO BEGIN
    Runner := Runner.Parrent;
    Top := Top + Runnter.Top;
  END;
...


Gruß
Klabautermann
WeissNix Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 19.03.03 16:31 
Danke für deine schnelle Antwort - werde ich gleich mal ausprobieren

Gruß
WeissNix
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mi 19.03.03 18:00 
Titel: Re: Klappt nicht so ganz
WeissNix hat folgendes geschrieben:
was kann ich da machen
Die ClientToScreen Methode deiner Komponente aufrufen und nicht die des Formulars.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject)
var pt: TPoint;
begin
  pt := MyComponent.ScreenToClient(Point(0, 0));
  ...
end;

_________________
Ist Zeit wirklich Geld?