Viele kleine Objekte verschieben

Suche nach einer Möglichichkeit viele kleine Objekte zu verschieben.
Hat Da jemand eine Idee.

Das Problem ist, dass man die mini Bilder, Panels etc. schon fast nicht markieren kann, geschweige denn mehrere kleine Objekte zu verschieben bereitet mir mega Arbeit… Mit Shift und Maus ist das einfach zu aufwendig.
Gibt es da nicht was wie bei den meisten Grafikprogrammen, dass man mit einer Umrahmung der Maus mehrere Objekte markieren kann?

Gruß Thomas

Gibt es ;).

Du musst nur mit der Maus einen Rahmen ziehen. Du musst aber auf „freiem“ Hintergrund anfangen, sonst verschiebst du das Hintergrundobjekt.

Ok, Ralf.

Habe mich undeutlich ausgedrückt.
Habe viele kleine Objekte innerhalb eines Panels und wenn ich da einen Rahmen mit der Maus ziehen will markiert er das ganze Panel, das ist meiner Meinung nach auch ein Bug, weil sowas in anderen Programmen die ich kenne nicht ist.
Dort muß man den Rahmen um das ganze Objekt(hier Panel) ziehen um es zu markieren.
Oder kennst Du da eine Möglichkeit?

Gruß Thomas

Rahmen ziehen inklusive Panel und dann mit Shift das Panel wieder deselektieren.

Aber du hast schon recht. Wenn der Hintergrund erst nach etwas längerer Zeit selektiert würde, könnte man viel einfacher Rahmen ziehen ;).

Halte beim markieren mal die STRG-Taste gedrückt.

Toni

Man lernt nie aus :), steht das irgendwo außer in diesem Beitrag?

Ok Toni,

mega Cool, das war genau was ich gesucht habe, anders gehts auch nicht.
Und Ralph hat recht, das gehört in die Doku!

MfG Thomas

Eine allgemeine Übersicht der Tastenbelegungen habe ich auch schon gesucht. Man weiß ja gar nicht ob es da etwas gibt.

Der Designer ist in Delphi geschrieben und der Designmodus schaut genau so aus wie mein Delphi - naja wie ne abgespeckte Version vielleicht :wink: Ich selbst benutze den Designer nicht, kenne es halt daher…

Toni

eine Übersicht für alle „Nicht Delphirianer“ wäre schon klasse. :rolleyes:

Die ist nichtmal bei der 1500 Euro schweren Version von Delphi dabei. :smiley:

Also man kann mit der Shift- und der Strg-Taste vieles machen was auch im Designer sinnvoll ist. Mit den Pfeiltasten (zusammen mit Shift und Strg) kann man die Objekte pixelgenau verschieben bzw pixelgenau die Größe ändern.

Die ist nichtmal bei der 1500 Euro schweren Version von Delphi dabei.

Da magst Du zwar recht haben, wobei es gibt auch kleine Softwareprodukte mit einer Top Doku und gerade die online Doku sollte nach und nach vervollständigt werden. HJH hat da ja schon einen ordentlichen Anfang gemacht. Aber da fehlt noch ne Menge.

Gruß Thomas

Stimmt. Das ist schon ein schöner Anfang, mit der Doku, aber vieles habe ich auch schon vermisst. Stichworte bzgl. fehlender Erläuterungen:

Layermodell
Was kann denn nun übereinander, in Vor- oder Hintergrund usw. angeordnet werden? Dass das relativ z.B. zur Groupbox gemeint ist, das muß Newbie auch erstmal begreifen

Koordinatensysteme (welche existieren, wie ordnen sich die Objekttypen darin ein, welche Objekte machen neue Koordinatensysteme auf usw.)

Modelle der Randbezüge (aligns und margins) und deren unterschiedlichste globale oder ojekttypische Anwendung. Ich kenn Aligns und Margins zwar ausführlich aus HTML, aber wie das hier anwendungsmäßig gemeint ist, sorry…

Bevels
Den Ausdruck las ich hier erstmals. Ok, vielleicht mein Problem, dass ich kein heute ausgebildeter Informatiker bin. Aber eine Auflistung / Erläuterung / Darstellung der verschiedenen auswählbaren Formen gehört in die Doku, eigentlich sogar mit je einem Bild. Dto. bei den Styles der Ränder, Panele, Shapes usw. Erst dann sind die „allgemein anwendbar“. Man kann beim besten Willen nicht alles durch probieren erschließen. Dazu ist das Teil zu mächtig.

Vererbungsmodelle und deren Verhalten
fast überall gibt es Parent-Flags (background, color, font usw). Klingt einfach und ist es auch. Wenn Newbie es einmal begriffen hat! Ebenso könnte mir vorstellen, dass für viele auch im Einstieg eine kurze Info zum Unterschied zwischen Enabled, ReadOnly und Visible nützlich ist (warum 3 Properties und nicht nur „änderbar“ und „sichtbar“?)

Spezielles
Habt ihr mal versucht, in einer Edit-Box ein Passwort für die Anzeige zu verschleiern? Da gibt es die nette Property „PasswortChar“, die eine „#z“-Eingabe erfordert mit z=Ziffer. Sollte/muß man probieren, um zu sehen was da passiert. Denn leider ist weder die Property selbst, noch deren Syntax oder gar Wertebereich irgendwo erwähnt.
Andererseits: Wie ich Texte INNERHALB von Edit-Boxen rechtsbündig machen kann (sinnvoll z.B. für numerische Werte), habe ich bis heute nicht gelesen/gefunden.
Ebenso fehlt die Info, was ich bei mehrzeiligen Texten in Memos als Zeilenumbruch-Zeichen eingeben muß. Das „|“ ist es nicht… Hab mir deshalb lieber einen HTML-String gebastelt und per Webbrowser-String ausgegeben. War einfacher und auch letztlich flexibler.

Fonts, Farben…
das man Farben auch direkt zuweisen kann, indem man NICHT den Select-Pfeil rechts benutzt bei Colors, sondern in die Fläche klickt… ok, durch Zufall entdeckt. Zum Glück.
Irgendwo steht in der Doku, das Farben nur aus einem Pool zugewiesen, nicht selber definiert werden können (so wie bei Images usw.). Irgendwie stimmt das dann aber hier nicht. Und wo kann ich nun diesen Farbpool erweitern?

Was bedeuten die numerischen Farbwerte? Kann man die Farbwerte bei den Color-Propertys im IPSYMCON-Feld eigentlich auch direkt numerisch zuweisen? Hat die numerische Notation was mit den RGB- oder anderen Farbmodellen zu tun? Wann / warum werden die Werte negativ?

Was bitte sind Brush- und Pen-Farbwerte, -styles und -modi? (siehe Shapes). Offenbar scheinen sich die Pen-Mode-Werte (die wohl sowas wie Rand-Definitionen zu sein scheinen) auch auf die Brush (wohl die Flächen) auszuwirken. Hier fehlt allerdings dringend EIne Beschreibung des Verhaltens der Modi! Und wenn das „in Delphianer-/Informatikerkreisen allgemein bekanntes Wissen“ sein sollte, dann gehört da m.E. ein Verweis auf die entsprechende Wikipedia, Selfhtml oder sonstwas-Quelle hin, damit Nichtinformatiker überhaupt eine Chance haben, sich da einzulesen.

…Bitte nicht mißverstehen. Die bisherige Doku ist toll. Ohne die würde vieles gar nicht bekannt sein. Das wenigstens schon mal alle Objektarten erläutert sind, ist schon sehr gut. Ebenso die Schnittstelle zu den Events und Variablen. Aber sie ist noch lange nicht fertig, um wirklich eine zu sein für den ANWENDER. Es wäre doch schade, wenn die vielen tollen versteckten Dinge im Designer nur deshalb unbenutzt blieben, weil sie keiner kennt.

Sorry, wenn ich mal wieder ausfühlicher wurde. Sind Punkte die mir selber beim Einarbeiten auffielen, und will nur nicht, dass das verloren geht. Man wird selbst viel zu schnell betriebsblind.

Gruß Gerd

Hallo Gerd,

da sprichst Du, so glaube ich, vielen Forumsmitgliedern und Nutzern von IPS aus dem Herzen.
Es steht ohne Zweifel außer Frage, dass IP-Symcon ein Top Produkt, mit einem super Forum ist, warum aber die Doku so Stiefmütterlich behandelt wird weiß ich auch nicht.
Vieleicht liegt es einfach an dem enormen Zeitaufwand den eine ordentliche Doku erfordert.
Allerdings sollte man auch sagen das diverse Zeit von Seiten der Admins auch dafür draufgeht manchmal doch recht simple Dinge im Forum zu erläutern. Da sollten Sie eher in der Doku stehen.

Gruß Thomas

genau. Dann könnte man einfach mal mit RTFM (=read the fucking manual) antworten :smiley:

Aber stimmt schon. Kenn das nur zu gut aus eigenem Erleben. Doku ist immer das, was draufgeht, wenns wieder mal knapp wird mit der Zeit. Letztlich steckt man die aber mehrfach rein im Nachhinein. Und dann noch der Effekt, dass man als Entwickler ja über alles bestens Bescheid weiß. Logo, dass einem selbst dann alles klar ist… Deshalb bin ich immer froh über solche Erstnutzerberichte

Ich möchte hier niemandem zu nahe treten und auch niemanden persönlich ansprechen.

Sicherlich ist die Doku nicht so tiefgreifend wie man sie sich wünschen würde aber bisweilen nehmen die Forderungen groteske Züge an. Niemand braucht diese Bevel-Einstellungen (nur ein Beispiel) wirklich. Man kann vieles davon einfach ignorieren. Und wer sich wirklich fragt wozu das ist braucht nur einmal darauf zu klicken und stellt sofort fest was passiert wenn man BevelOuter von bvRaised auf bvLowered umstellt.

Diese Properties sind 1:1 aus der Entwicklungsumgebung von Delphi übernommen. Delphi kostet knapp 15 Hundert Flocken und ist für professionelle Entwickler gedacht. Ich verdiene seit mehrern Jahen meine Brötchen damit und auch ich weiss nicht exakt über alle diese Properties bescheit.

Das Problem dabei eine tiefgreifende Doku für solche „Probleme“ zu schreiben wird nämlich darin liegen, dass man zum Verständnis die Hintergründe erklären müsste. Und, ganz im Ernst… Das würde sich keiner mehr als 2 Stunden durchlesen. Und der Nährwert ist nahe Null.

Stichwort Farben ändern: (sorry gwanjek, dass ich schon wieder dein Beispiel ausgewählt habe)
Ist das gleiche wie beim BevelOuter. Tut mir leid, wenn nirgendwo steht, das man auf den Button klicken kann. Ich meine Der Button ist da. Er ist deutlich sichtbar. Klickt doch einfach drauf, dann seht ihr schon was passiert.

Zurück zum BevelOuter:
Wer wirklich etwas über die Details wissen will kann sich genausogut bei Google informieren- Stichworte währen zum Beispiel „Designer“ oder auch „Formular-Designer“, „Delphi“ und „Panel“, „BevelOuter“. Okay… es gehört etwas Geduld dazu, denn unter Delphi-Usern ist das nicht wirklich ein „heisses Thema“… :rolleyes:

Ein Beispiel aus der Delphi Doku:

Die Klasse TPanel ist abgeleitet von TCustomPanel.
Die Klasse TCustomPanel ist abgeleitet von TCustomControl.
Die Klasse TCustomControl ist abgeleitet von TWinControl.
Die Klasse TWinControl ist abgeleitet von TControl.
Die Klasse TControl ist abgeleitet von TComponent.
Die Klasse TComponent ist abgeleitet von TPersitent.
Die Klasse TPersitent ist abgeleitet von TObject.

VCL-Referenz:

TObject stammt aus der Unit System:
Beschreibung

TObject kapselt das grundlegende Verhalten, das allen Objekten gemeinsam ist. Mit den von TObject eingeführten Methoden können Sie

Objektinstanzen erzeugen, verwalten und auflösen. Dies geschieht durch Zuweisen, Initialisieren und Freigeben von Speicher für das Objekt.
darauf reagieren, dass Objektinstanzen erzeugt oder freigegeben werden.
auf objektspezifische Informationen über den Klassentyp und die Instanz zugreifen und Laufzeitinformationen (RTTI) von Eigenschaften verwalten, die als published deklariert sind.
Botschaften individuell bearbeiten.

Schnittstellen, die das Objekt implementiert, unterstützen.

TObject wird als direkte Basis für einfache Objekte verwendet, die nicht persistent sind (also nicht gespeichert und erneut geladen werden müssen) und die keinen anderen Objekten zugewiesen werden.

Die Leistungsfähigkeit von Objekten beruht zu einem großen Teil auf den Methoden, die TObject einführt. Viele dieser Methoden sind für die interne Verwendung in den IDEs vorgesehen, nicht aber für einen direkten Aufruf durch den Anwender. Andere Methoden müssen in abgeleiteten Objekten, die ein komplexeres Verhalten zeigen, überschrieben werden.

Obwohl TObject das Basisobjekt eines Komponenten-Frameworks ist, sind nicht alle Objekte auch Komponenten. Alle Komponentenklassen sind von TComponent abgeleitet.

Hinweis: TObject wird nie direkt instantiiert. Obwohl keine Programmiersprachenelemente zum Verhindern der Instantiierung verwendet werden, ist TObject eine abstrakte Klasse.

Methoden von TObject:
In TObject

~TObject
AfterConstruction
BeforeDestruction
ClassInfo
ClassName
ClassNameIs
ClassParent
ClassType
CleanupInstance
Create
DefaultHandler
Destroy
Dispatch
FieldAddress
Free

FreeInstance
GetInterface
GetInterfaceEntry
GetInterfaceTable
InheritsFrom
InitInstance
InstanceSize
MethodAddress
MethodName
NewInstance
SafeCallException
TObject

Jetzt kommen etwa 4-5 Seiten Erklärung der eizelnen Methoden, die ich euch erspare… Das selbe kommt dann noch für die Properties von TObject und der anderen. Also für TCustomPanel, TCustomControl, TWinControl, TControl, TComponent, TPersitent. Da sich die Eigenschaften untereinander bedingen kann man leider nicht einfach die hälfte weglassen.

Aber machen wir einen Sprung von mehreren Kapiteln:
Auszug aus der Referenz von TCustomPanel, dem Vorfahren von TPanel. Abschnitt VCL-Referenz ohne CLX.

TCustomPanel stammt aus der Unit ExtCtrls:
Beschreibung

TCustomPanel dient als Basisklasse für Objekte, die sich aus mehreren anderen Steuerelementen zusammensetzen. Tafeln sind Steuerelemente, die andere Steuerelemente aufnehmen und auf diese Weise in Gruppen zusammenfassen können.

Wird eine Tafel mit Hilfe der Eigenschaft Align im Formular ausgerichtet, dann behält sie ihre relative Position auch dann bei, wenn die Größe des Formulars verändert wird. Sie können eine Tafel beispielsweise so ausrichten, dass sie immer im oberen Bereich des Formulars angezeigt wird, gleichgültig, in welcher Weise der Benutzer Form und Größe des Formulars verändert. Tafeln eignen sich damit gut für die Implementierung von Komponenten wie Werkzeugleisten oder Statusleisten. Sie könnten zum Beispiel eine Werkzeugleiste oder eine Werkzeugpalette erstellen, indem Sie Schaltflächen zur Ausführung von Befehlen oder zum Wechseln der Modi in eine Tafel einfügen.

Properties:
In TCustomPanel

Alignment
BevelInner
BevelOuter
BevelWidth
BorderStyle
BorderWidth

FullRepaint
Locked

Abgeleitet von TWinControl

AlignDisabled
Brush
ClientOrigin
ClientRect
ControlCount
Controls

Ctl3D
DockClientCount
DockClients
DoubleBuffered
Handle
ParentBackground

ParentWindow
Showing
TabOrder
TabStop
UseDockManager
VisibleDockClientCount

Abgeleitet von TControl

Action
Align
Anchors
BiDiMode
BoundsRect
ClientHeight
ClientWidth

Constraints
ControlState
ControlStyle
Cursor
DockOrientation
Enabled
Floating

FloatingDockSiteClass
Height
HelpContext
HelpKeyword
HelpType
Hint

HostDockSite
Left
LRDockWidth
Name
Parent
ShowHint
TBDockHeight

Top
UndockHeight
UndockWidth
Visible
Width
WindowProc

Abgeleitet von TComponent

ComObject
ComponentCount
ComponentIndex
Components
ComponentState
ComponentStyle

DesignInfo
Owner
Tag
VCLComObject

Methoden:
In TCustomPanel

~TCustomPanel
AdjustClientRect
CanAutoSize
Create
CreateParams
GetControlsAlignment

Paint
TCustomPanel

Abgeleitet von TCustomControl

Destroy

Abgeleitet von TWinControl

Broadcast
CanFocus
ContainsControl
ControlAtPos
CreateParented
CreateParentedControl

DefaultHandler
DisableAlign
DockDrop
EnableAlign
FindChildControl
FlipChildren

Focused
GetTabOrderList
HandleAllocated
HandleNeeded
InsertControl
Invalidate

PaintTo
Realign
RemoveControl
Repaint
ScaleBy
ScrollBy
SetBounds

SetFocus
Update
UpdateControlState

Abgeleitet von TControl

BeginDrag
BringToFront
ClientToParent
ClientToScreen
Dock
DragDrop
Dragging

DrawTextBiDiModeFlags
DrawTextBiDiModeFlagsReadingOnly
EndDrag
GetParentComponent
GetTextBuf
GetTextLen

HasParent
Hide
InitiateAction
IsRightToLeft
ManualDock
ManualFloat
MouseWheelHandler

ParentToClient
Perform
Refresh
ReplaceDockedControl
ScreenToClient
SendToBack
SetTextBuf

Show
UseRightToLeftAlignment
UseRightToLeftReading
UseRightToLeftScrollBar

Abgeleitet von TComponent

BeforeDestruction
DestroyComponents
Destroying
ExecuteAction
FindComponent
FreeNotification

FreeOnRelease
GetNamePath
InsertComponent
IsImplementorOf
ReferenceInterface
RemoveComponent

RemoveFreeNotification
SafeCallException
SetSubComponent
UpdateAction

Abgeleitet von TPersistent

Assign

Abgeleitet von TObject

AfterConstruction
ClassInfo
ClassName
ClassNameIs
ClassParent
ClassType
CleanupInstance

Dispatch
FieldAddress
Free
FreeInstance
GetInterface
GetInterfaceEntry
GetInterfaceTable

InheritsFrom
InitInstance
InstanceSize
MethodAddress
MethodName
NewInstance

Das ist ein Menü, dass ich kopiert habe. Zu jedem Menüpunkt gibt es reichlich Informationen.
Und nun noch, weil es mein Beipiel war, ein Auszug (!) von BevelOuter:

BevelOuter - Abschitt VCL:

Die Eigenschaft BevelOuter bestimmt den Stil der äußeren Schrägkante einer Tafel.

Delphi-Syntax:

property BevelOuter: TPanelBevel;

C++ Syntax:

__property TBevelCut BevelOuter = {read=FBevelOuter, write=SetBevelOuter, default=2};

Beschreibung

Mit Hilfe der Eigenschaft BevelOuter können Sie der Tafel ein dreidimensionales Aussehen verleihen. Eine Tafelkomponente besitzt zwei Schrägkanten. Die äußere Schrägkante befindet sich am Rahmen des Steuerelements. Innerhalb der äußeren Schrägkante befindet sich die innere Schrägkante. Der Abstand zwischen den beiden Kanten wird mit der Eigenschaft BorderWidth in Pixel angegeben. Die Breite der äußeren Schrägkante wird in der Eigenschaft BevelWidth in Pixel angegeben.

Wer jetzt gerne die Delphi-Hilfe neu verfassen möchte, an IPS anpassen und vielleicht noch gleich so formulieren, dass ein „Nicht-Informatiker“ sie versteht, kann sich gern bei mir melden. Und ich schreib dann einfach das nächste mal RTFM :mad:

Gruß,

Toni

Mein lieber Toni,

ich glaube das viele Dinge bzgl. des Designers durchaus keine exorbitante Beschreibung nötig haben, da hast Du recht.
Aber ich bitte Dich doch zu unterscheiden, dass einige IPS Befehle noch nicht einmal im Syntax beschrieben sind und das sollte nicht sein, das kann man ändern!

Gruß Thomas

Das sehe ich auch so, hab ich ja oben durchaus auch einleitend angemerkt…

Toni

mir gehts einzig um die Nutzbarkeit. Und: für Nicht-Delphianer. Nicht mehr, aber auch nicht weniger.