Fragensteller
Reportkomponenten zur laufzeit ändern

Frage
-
Hallo,
ich habe mal eine Frage ist es möglich in VisualBasic zur Laufzeit zB. eine Textbox zu verschieben, in dem ich zur Lauftzeit die Location Werte ändere über ein Eingabefeld.
Sinn und Zweck des ganzen soll sein das der Anwender das design zB bei Visitenkarten ändern kann und die Anwendung schlank bleibt ohnen x Berichte zuerstellen um eine vordefinierte auswahl anzubieten.
Ich wäre dankbar wenn es da eine Möglichkeit gibt für eine kurze Erläuterung.
Alle Antworten
-
Hallo ViJean Soft, ich habe 2 threads welche das Thema Verschieben von Steuerelemten auf einer Form zur Laufzeit behandeln. Controls lassen sich mit der Eigenschaft .Location verschieben. Dazu benötigt man ein Object der Point-klasse. Das sieht dann so aus: xyz.Location = loc
hier ein Beispiel:
http://social.msdn.microsoft.com/Forums/de-DE/visualbasicde/thread/8ec0e111-a5af-4669-a96d-4426978b6525
ein weiteres zusätzlich mit mouse move event:
http://social.msdn.microsoft.com/Forums/de-DE/vbasicexpresseditionde/thread/bde2e6ad-93a5-4a62-b6a5-e380875d4f6e
schöne Grüße Ellen- Bearbeitet Ellen Ramcke Mittwoch, 3. Februar 2010 08:28 link einfügen
- Bearbeitet Robert BreitenhoferModerator Donnerstag, 4. Februar 2010 09:22 Hyperlink als Hyperlink
-
Hallo,
ja das ist möglich, allerdings darfst Du nicht über das Property "Location" gehen, darüber kannst Du die Position nur abfragen.
Zum Setzen musst Du Left = X und Top = Y verwenden.
Das bezieht sich jetzt aber auf WinForms-Control; willst Du zum Drucken eine spezielle Reportkomponente verwenden (wegem dem Thread Subject)?
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Aktuelle Y-Pos vorgeben
Me.TextBoxXPos.Text = Me.LabelToMove.Location.X
Me.TextBoxYPos.Text = Me.LabelToMove.Location.Y
End Sub
Private Sub ButtonMove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonMove.Click
Me.LabelToMove.Left = CInt(Me.TextBoxXPos.Text)
Me.LabelToMove.Top = CInt(Me.TextBoxYPos.Text)
End Sub
End Class
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de -
Hallo Olaf, bist Du Dir sicher?
Ich habe in der Dokumentation zu TextBox-Eigenschaften dieses gefunden:
.Location
Ruft die Koordinaten der linken oberen Ecke des Steuerelements relativ zur linken oberen Ecke des Containers ab oder legt diese fest. (Von Control geerbt.)
Ich selber praktiziere das auch in meinen Programmen und es läuft.
schöne Grüße
Ellen -
Hallo Ellen,
sicher bin ich mir nie ;_), aber wenn ich in VB.NET 2008 über Location gehe, bekomme ich beim Compileren einen Fehler. Da es über Left/Top geht, habe ich mich bisher nicht weiter drum gekümmert.
Me.LabelToMove.Location.X = 1
Expression is a value and therefore cannot be the target of an assignment.
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de -
Hallo Ellen, Olaf,
man kann auch die Location direkt zuweisen.
Nur weil es sich dabei um einen Werttyp (Structure in Visual Basic) handelt,
muß dabei eine Zuweisung eines Point erfolgen, also
LabelToMove.Location = new Point(x, y)
Nicht hingegen funktionieren würde:
LabelToMove.Location.X = x ' FALSCH!
denn Werttypen können nur in der Gesamtheit zugewiesen werden,
da jeweils eine neue Instanz erzeugt wird. Siehe Strukturen und Klassen
Will man alle Angaben eines Steuerelements verändern, kann man das
über die Bounds Eigenschaft - mit Rectangle ebenfalls ein Werttyp! -
oder aber über die SetBounds-Methode tun, die von den Eigenschaften
(Top, Left, Bottom, Right, Location, Size) intern beim Setzen verwendet wird.
Gruß Elmar
-
Hallo,
was verstehst Du unter Reportkomponenten?
Denn die bisherigen Antworten beziehen sich auf die Windows Forms Steuerelemente,
die nur bedingt für einen Bericht (hier Visitenkarten) geeignet wären.
Denn wäre das Drucken über die ReportDocument am Ende sinnvoller
und die Darstellund auf dem Bildschirm hat nur wenig mit dem Drucken zu tun.
Wenn Du etwas wie die Reporting Services, Crystal Reports etc. meinst,
die für einen wiederholten Druck besser geeignet wären, so ist das Vorgehen
ein vollkommen anderes.
Gruß Elmar -
Hallo Elmar und Olaf,
verstanden.
Die Top und Left Eigenschaft habe ich bisher nur nebensächlich betrachtet, weil es ja .Location gibt.
Aber die Zuweisung geht in vielen Fällen doch einfacher, als über die
Struktur Point gehen zu müssen. Aber im Prinzip macht man das genau dasselbe.
Gruß
Ellen -
Hallo
uff steht hier viel, wie ich in einer Windowsform Textboxen verschieben kann weiss ich.
Mir geht es darum zur Laufzeit ein Formular zu haben, wo mit der Endanwender quasi Textboxen verschieben kann und letztendlich das Layout wie bei Visitenkarten verändert. Ich fand das dieses für ein Programm sinnvoll ist als wenn ich den Anwender einfach Layout vorgestalte und er nur die daten ein gibt und dann auf drucken geht. Würde für mich keine vernünftige Anwendung sein da ich der Meinung bin das man vielleicht ja auch selbst gestalten will und einen das auch Spass macht.
So nun bin ich aber immer noch am gleichen Punkt, ich benötige letztendlich eine Anweisung die auf die Reportkomponente zugreift und dann Bild oder Textbox verschieben kann, das Ergebniss soll in einer Vorschau live angezeigt werden.
LG
ViJean Soft -
Hallo ViJean,
in meinem Codebeispiel (ganz oben der zweite Link) ist auscodiert wie man ein Element in einer
Form mit Hilfe der Mouse verschiebt. Das geht mit jedem Element egal ob PictureBox, Textbox. Label .....
Dieses würde dann Dein Kunde machen.
Wie man dann die fertige gestaltette Form auf den Drucker schickt, kann ich Dir nicht sagen.
Soweit bin ich noch nicht.
Ich bin aber gespannt auf die Lösung und werde das hier weiter verfolgen.
schöne Grüße
ellen -
Hallo ViJean,
in meinem Codebeispiel (ganz oben der zweite Link) ist auscodiert wie man ein Element in einer
Form mit Hilfe der Mouse verschiebt. Das geht mit jedem Element egal ob PictureBox, Textbox. Label .....
Dieses würde dann Dein Kunde machen.
Wie man dann die fertige gestaltette Form auf den Drucker schickt, kann ich Dir nicht sagen.
Soweit bin ich noch nicht.
Ich bin aber gespannt auf die Lösung und werde das hier weiter verfolgen.
schöne Grüße
ellen
vielleicht bin ich ein bisschen blöd... aber ich kann eine Form über ein Printklasse und Anweisung drucken. Aber ich weiss nicht wie ich das anstellen soll, die Printklasse so zuschreiben das man zB damit auf A4 Visitenkarten ausdrucken und mit den Richtigen Format. Dazu eigen sich ja nun die Reportkomponenten. Es muss doch ne Möglichkeit geben direkt darauf zuzugreifen um das dann so wie auf einer Form verändern zu können.
Vielleicht hat ja noch jemand eine Idee? -
Hallo ViJean Soft,
Schau Dir die folgende Artikeln an. Vielleicht findest Du etwas dass Dir weiter helfen kann.
http://www.codeproject.com/KB/printing/printingAbsolutebeginners.aspx
PrintDocument. QueryPageSettings-Ereignis à http://msdn.microsoft.com/de-de/library/system.drawing.printing.printdocument.querypagesettings.aspx
„damit auf A4 Visitenkarten ausdrucken und mit den Richtigen Format“ à Kannst Du bitte diesen Satz mehr entwickeln, z.B. was bedeutet „A4 Visitenkarten“ und was versteht man unter Richtigen Format … (Landscape, Portrait ?
Grüße und Danke,
Robert
-
Hallo ViJean Soft,
Schau Dir die folgende Artikeln an. Vielleicht findest Du etwas dass Dir weiter helfen kann.
http://www.codeproject.com/KB/printing/printingAbsolutebeginners.aspx
PrintDocument. QueryPageSettings-Ereignis à http://msdn.microsoft.com/de-de/library/system.drawing.printing.printdocument.querypagesettings.aspx
„damit auf A4 Visitenkarten ausdrucken und mit den Richtigen Format“ à Kannst Du bitte diesen Satz mehr entwickeln, z.B. was bedeutet „A4 Visitenkarten“ und was versteht man unter Richtigen Format … (Landscape, Portrait ?
Grüße und Danke,
Robert
Also A4 ist das Papierformat im normal Fall kann man 10 Karten auf ein A4 Blatt drucken, in den Reportkomponenten kann man das schön unter Berichtseinstellung -Edikettenformat einstellen.
Ich habe ein Klasse Namens Print mit dieser kann ich den Text der auf Windowsform liegt normal auf ein weisse A4Blatt drucken.
Mein Problem ist wenn ich dieses über Windowsform bewerkstellig, müsste die Prinklasse umgeschrieben werden und zwar so das ich 2 Tabellenspalten habe links und rechts jeweils mit 5 Karten und bei Druck müssten die die Daten sprich Bilder und Texte als den einzelnen Textboxen sowie es auf den Bildschirm zusehen ist dann jeweils genauso in die einzelnen Karten gedruckt werden.
Deswegen suche ich eine Lösung wie ich das mit den Reportkomponenten bewerkstelligen kann, bis her bin ich aber auf nichts gestoßen wie man darauf zugreifen kann.
Vielleicht mal zum Verständnis ich soll für jemanden ein Programm schreiben wo man am PC seine Visitenkarten selsbt gestalten kann.
Sprich platzieren von texten und grafiken, dieses wäre ja dann mit Textboxen und Pictureboxen realisierbar, wie ein designer.
Vielleicht hilf das ja weiter...