AGB  ·  Datenschutz  ·  Impressum  







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

Komponenten verschieben

Ein Thema von Shark99 · begonnen am 2. Aug 2010 · letzter Beitrag vom 12. Aug 2010
Antwort Antwort
Seite 1 von 2  1 2      
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

Komponenten verschieben

  Alt 2. Aug 2010, 23:41
Ich habe eine Allgemeine Frage zu Komponenten.

Wenn ich Beispielweise 5 Checkboxes und 5 Buttons habe, kann ich diese irgendwie Gruppieren und zur Runtime mit einer einzigen Zeile Code verschieben (also z.B. um 10 Pixel nach oben)?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Komponenten verschieben

  Alt 2. Aug 2010, 23:44
Packe sie auf eine Containet-Komponente ( z.B. einen Panel)
Markus Kinzler
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#3

AW: Komponenten verschieben

  Alt 3. Aug 2010, 00:02
Dass es mit einem Panel geht ist mir klar, ich wollte aber eine allgemeingültige Lösung. Ein Panel ist nicht durchsichtig und deshalb muss man fummeln wenn die Form z.B. eine Grafik als Hintergrund hat (wie in meinem aktuellen Projekt).
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Komponenten verschieben

  Alt 3. Aug 2010, 00:09
Ich habe eine Idee, Warum schreibst du dir nich selbst eine solche Komponente? Ich kenne auch noch keine die eine solch einfache funktion beherrscht (einfach nur Container sein).
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Komponenten verschieben

  Alt 3. Aug 2010, 01:13
Seltsam, dass es in der VCL keine unsichtbaren Panels gibt.
Man bräuchte diese auch schon allein deswegen um die sichtbaren Controls
gezielt zu gruppieren.
Hier wäre so ein Transparent Panel (Freeware mit Source)
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: Komponenten verschieben

  Alt 3. Aug 2010, 08:44
Falls du bereits Jedi nutzt, kannst du das TJvPanel nehmen und auf Transparent:=True setzen
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
Benutzerbild von LoCrux
LoCrux

Registriert seit: 5. Mär 2007
Ort: Gwang-Yang-City
48 Beiträge
 
Delphi 2009 Enterprise
 
#7

AW: Komponenten verschieben

  Alt 3. Aug 2010, 10:05
Ganz schnell und billig... Nutze z.B. die Tag-Eigenschaft (ist für sowas vorgesehen)...

Delphi-Quellcode:
function MovedTaggedComponents(ParentComponent:TComponent;TagID:Integer;dx,dy:Integer):Integer;
var
  i : Integer;
  Comp : TComponent;
  moved : Integer;
begin
  moved := 0;
  if assigned(ParentComponent)
  then begin

    for i := 0 to ParentComponent.ComponentCount-1
    do begin
      Comp := ParentComponent.Components[i];
      if (Comp is TButton) or (Comp is TCheckbox)
      then begin
        if (Comp.Tag = TagID)
        then with (Comp as TWinControl)
        do begin
          Left := Left+dx;
          Top := Top+dy;
          Update;
          inc(moved);
        end;
      end;
    end;

  end;
  result := moved;
end;
Dann hast du nur noch eien Zeile

Delphi-Quellcode:
  .
  MovedTaggedComponents(Form1,1,-10,50);
  .
“C++ is an insult to the human brain.” [Niklaus Wirth]

2B OR NOT 2B (.. THAT IS FF)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Komponenten verschieben

  Alt 3. Aug 2010, 10:11
Seltsam, dass es in der VCL keine unsichtbaren Panels gibt.
Wieso sollte man Panels nicht "Unsichtbar" machen können? Einfach die Borders deaktivieren und schon gehts. Haben wir hier "ein paar mal" im Einsatz.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Komponenten verschieben

  Alt 3. Aug 2010, 10:14
Mit unsichtbar hat er wohl transparent gemeint. das geht aber, wie schon geschrieben mit JVPanel oder anderen Lösungen.

Das mit dem Panel war zudem nur ein Beispiel für eine Container-Komponente
Markus Kinzler
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#10

AW: Komponenten verschieben

  Alt 3. Aug 2010, 10:19
Ich würde das entweder, wie schon gesagt wurde, mit dem Tag-Wert machen, oder, wenns eleganter werden soll, über eine selbsterstellte Containter-Klasse, ähnlich einer Liste, der du zur Laufzeit Objekte hinzufügen und entfernen kannst. (z.B. realisiert über eine TObjectList innerhalb der Klasse)
Diese Klasse ist selbst nicht sichtbar, also keine visuelle Komponente, sondern nur eine Klasse.
Dieser Klasse gibst du dann z.B. eine Funktion Move(x,y), die alle der Klasse hinzugefügten Objekte (alle Objekte in der internen TObjectList) um x/y verschiebt.
Damit bist du dann insgesamt flexibler, da du Objekte entfernen kannst und welche hinzufügen, ohne dass du mit dem unübersichtlichen Tag-Wert rumfummeln müsstest.

Geändert von blackfin ( 3. Aug 2010 um 10:22 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:30 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