Discussion:
Textfeldgroesse in Endlosformular an Inhalt anpassen
(zu alt für eine Antwort)
Jörg Meier
2005-04-10 10:30:04 UTC
Permalink
Hallo NG,

ich habe in einem Endlosformular einige Textfelder.
Da der Inhalt der Textfelder manchmal nur ein wort aber manchmal auch ganze
Sätze sein können, möchte ich, dass sich die Textfeldgröße automatisch
anpasst.
Mit der Eigenschaft Vergrößern = Ja, Verkleinern = Ja klappt das aber leider
nicht.

Wie mache ich das ?

Danke,
schönen Sonntag,

Jörg
Karl Donaubauer
2005-04-10 10:49:41 UTC
Permalink
Post by Jörg Meier
ich habe in einem Endlosformular einige Textfelder.
Da der Inhalt der Textfelder manchmal nur ein wort aber manchmal auch
ganze Sätze sein können, möchte ich, dass sich die Textfeldgröße
automatisch anpasst.
Mit der Eigenschaft Vergrößern = Ja, Verkleinern = Ja klappt das aber
leider nicht.
Diese Eigenschaften beziehen sich nur auf die Seitenansicht und den Druck.
Post by Jörg Meier
Wie mache ich das ?
So wie deine Anfrage klingt ("Endlosformular einige Textfelder"), gar nicht.

Man kann zwar per API die Größe eines Textfeldes anpassen
s. z.B. http://www.lebans.com/autosize_textbox.htm
Das geht aber AFAIK immer nur für das Steuerelement, das
den Fokus hat, und somit auch nur für den aktuellen Datensatz.
--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
Josef Poetzl
2005-04-10 11:07:35 UTC
Permalink
Hallo!
Post by Jörg Meier
ich habe in einem Endlosformular einige Textfelder.
Da der Inhalt der Textfelder manchmal nur ein wort aber manchmal auch ganze
Sätze sein können, möchte ich, dass sich die Textfeldgröße automatisch
anpasst.
Mit der Eigenschaft Vergrößern = Ja, Verkleinern = Ja klappt das aber leider
nicht.
Karl ist auf dieses Posting schon eingegangen, trotzdem von mir noch
die Zusatzfrage:
Hängt diese Frage mit Deinem anderen Thread ("Bericht aktualisieren")
zusammen?
Wenn ja, dann erkläre doch einmal genauer, was Du machen willst.
Auf der einen Seite sprichst Du von einer 1-seitigen Darstellung,
weiters willst Du ein Endlosformular mit variabler DS-Höhe verwenden
und das ganze soll dann noch alle 60 Sekunden aktualisiert werden.

Möglicherweise ist in Deinem Fall ein ungebundenes Formular
zweckmäßiger.

mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Jörg Meier
2005-04-10 11:59:51 UTC
Permalink
Hi,
Post by Josef Poetzl
Hängt diese Frage mit Deinem anderen Thread ("Bericht aktualisieren")
zusammen?
Wenn ja, dann erkläre doch einmal genauer, was Du machen willst.
Auf der einen Seite sprichst Du von einer 1-seitigen Darstellung,
weiters willst Du ein Endlosformular mit variabler DS-Höhe verwenden
und das ganze soll dann noch alle 60 Sekunden aktualisiert werden.
Möglicherweise ist in Deinem Fall ein ungebundenes Formular
zweckmäßiger.
Ja, da hast Du Recht, das hängt alles zusammen.
Es ist so, dass ich bestimmte Datensätze über einen Rechner im Netzwerk mit
einem daran angeschlossenen Beamer anzeigen möchte.
Die Datensätze enthalten Informationen aus mehreren Tabellen, meist 1:n
Die Datensätze sollen untereinander angezeigt werden. Es reichen immer die
letzten Datensätze (ca. 10), der neueste wird ganz oben angezeigt, die
älteren schiebt es nach unten raus.
Die Darstellung soll sich alle 60 Sekunden aktualisieren, sprich neue
Datensätze mit anzeigen (Abfrage erneut ausführen).

Das habe ich mittlerweile alles mit einem Bericht geschafft.
Der Bericht hat ja keinen Timer, leider.
Also rufe ich über eine eine eigene Menüleiste eine Funtkion auf, die
- ein Formular öffnet, dies ausblendet, den Timer auf 60000 stellt und
- einen Bericht, der die o.g. Daten anzeigt (in diesem gibt es auch bedingte
Formatierung auf Datensatzebene)

Beim Timer-Ereignis des ausgeblendeten Formulars wird der Bericht
geschlossen und wieder geöffnet, damit eben neue Datensätze angezeigt
werden.
Der BEricht enthält auch verknüpfte Grafiken (Logo) im BErichtskopf.

Von der Funktionaliät her, funktioiniert es.
Aber es gibt zwei Probleme, die die Anwenderakzeptanz schrumpfen lassen

1. Das Schließen und Öffnen des Berichtes dauert. Daher flackert der
Bildschirm (Schließen, Grafiken einlesen, Öffnen, etc.)
2. Das übliche Problem mit der Auflösung. Access stellt sich da ja selten
dumm an :-)

Also, für mich gibt es drei Möglichkeiten:

1. Endlosformular
2. BEricht wie bisher, bloß irgendwie optimiert
3. Datenzugriffsseite

Mit den datenzugriffseiten kenne ich mich aber gleich überhaupt nicht aus.
Formular wäre m.E. gut, weil ich da einfach über Refresh/Repaint/Requery die
Daten neu holen kann, die Darstellung müsste viel schneller sein. Problem
ist dabei aber wohl, dass die Textfeldgrößen sich nicht anpassen lassen. Das
ist Mist, weil ich natürlich Textfelder mit nur wenig und Textfeld mit viel
Inhalt habe. Im Bericht wird das eben schön angepasst.

Also, ich hoffe, dass ich das jetzt alles klar genug erklärt habe und wäre
über Tipps, Hilfen dankbar.
Bitte nicht zuuuu kopmpliziert, da ich nun wirkliuch kein Profi bin :-)

Danke, schönen Sonntag

Jörg
Josef Poetzl
2005-04-10 12:19:52 UTC
Permalink
Hallo!
Post by Jörg Meier
Es ist so, dass ich bestimmte Datensätze über einen Rechner im Netzwerk mit
einem daran angeschlossenen Beamer anzeigen möchte.
Die Datensätze enthalten Informationen aus mehreren Tabellen, meist 1:n
Die Datensätze sollen untereinander angezeigt werden. Es reichen immer die
letzten Datensätze (ca. 10), der neueste wird ganz oben angezeigt, die
älteren schiebt es nach unten raus.
Die Darstellung soll sich alle 60 Sekunden aktualisieren, sprich neue
Datensätze mit anzeigen (Abfrage erneut ausführen).
Das habe ich mittlerweile alles mit einem Bericht geschafft.
[...]
Post by Jörg Meier
1. Das Schließen und Öffnen des Berichtes dauert. Daher flackert der
Bildschirm (Schließen, Grafiken einlesen, Öffnen, etc.)
Hier könnte folgendes helfen:
Application.Echo False
'Bericht aktualisieren
'...
Application.Echo True
Post by Jörg Meier
2. Das übliche Problem mit der Auflösung. Access stellt sich da ja selten
dumm an :-)
Zu "Auflösung anpassen" gibt es imo etwas in der FAQ.
Post by Jörg Meier
1. Endlosformular
2. BEricht wie bisher, bloß irgendwie optimiert
3. Datenzugriffsseite
Ich ergänze einmal:
4. ungebundenes Formular (Einzelansicht) und Felder per Code
einstellen => Größe und Position der Textfelder lässt sich anpassen.

oder (eine etwas "andere" Idee):
5. Powerpoint fernsteuern ;-)

mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Jörg Meier
2005-04-10 12:31:20 UTC
Permalink
Hallo Josef,
Post by Josef Poetzl
Application.Echo False
'Bericht aktualisieren
'...
Application.Echo True
Wird sofort getestet !
Post by Josef Poetzl
Zu "Auflösung anpassen" gibt es imo etwas in der FAQ.
Ja, das bekommt man auf die Reihe, das stimmt.
Post by Josef Poetzl
4. ungebundenes Formular (Einzelansicht) und Felder per Code
einstellen => Größe und Position der Textfelder lässt sich anpassen.
Verstehe ich das so richtig:
Du würdest ein "Einzelnes Formular", ungebunden erstellen. Dann die
Textfelder erstellen und diese evtl. zehnmal (Falls ich die letzten zehn DS
möchte) kopieren / einfügen, etc. Z.B. für das Textfeld txtDatum, txtDatum1,
txtDatum2, etc.
Die reihst Du so untereinander, dass es wie ein Endlosformular wäre.
Jetzt stellst Du die Feldinhalte im Code zusammen und weist diese dann den
Textfeldern txtDatum1, txtDatum2, etc. zu.
Größe ermittelst Du wohl über die Zeichenanzahl und lässt dann die Feldgröße
entsprechend anpassen.

Richtig verstanden?

Das zuweisen würdest du wahrscheinlich mit While/Wend oder For Each / Next
oder Loop machen, oder?
Post by Josef Poetzl
5. Powerpoint fernsteuern ;-)
Das ist mir zu umständlich, sorry. Außerdem brauchen die Rechner dann wieder
PowerPoint. So arbeite ich mit der RunTime, der IE wäre vorhanden.


Also, die Sache mit dem Bericht und dem ausgeblendeten Formular ist halt
eine eigene Konstruktion, weil Berichte leider keinen Timer haben.
Das wäre mal was für eine der nächsten Access-Versionen :-)

Danke schonmal für die super schnelle Hilfe

Jörg
Josef Poetzl
2005-04-10 13:21:52 UTC
Permalink
Hallo!
Post by Jörg Meier
Post by Josef Poetzl
4. ungebundenes Formular (Einzelansicht) und Felder per Code
einstellen => Größe und Position der Textfelder lässt sich anpassen.
Du würdest ein "Einzelnes Formular", ungebunden erstellen. Dann die
Textfelder erstellen und diese evtl. zehnmal (Falls ich die letzten zehn DS
möchte) kopieren / einfügen, etc. Z.B. für das Textfeld txtDatum, txtDatum1,
txtDatum2, etc.
Die reihst Du so untereinander, dass es wie ein Endlosformular wäre.
Jetzt stellst Du die Feldinhalte im Code zusammen und weist diese dann den
Textfeldern txtDatum1, txtDatum2, etc. zu.
Größe ermittelst Du wohl über die Zeichenanzahl und lässt dann die Feldgröße
entsprechend anpassen.
Richtig verstanden?
Ja, so habe ich es gemeint.
Post by Jörg Meier
Das zuweisen würdest du wahrscheinlich mit While/Wend oder For Each / Next
oder Loop machen, oder?
Post by Josef Poetzl
5. Powerpoint fernsteuern ;-)
Das ist mir zu umständlich, sorry. Außerdem brauchen die Rechner dann wieder
PowerPoint. So arbeite ich mit der RunTime, der IE wäre vorhanden.
Vielleicht ist die Idee mit dem IE gar nicht so schlecht. ;-)

Im Prinzip würde ich das ähnlich dem schon erwähnten ungebundenen
Formular machen. Aber statt Textfelder einzustellen, könntest Du
HTML-Code (oder XML) erstellen.
=> Datenaufbereitung mit Access, Datendarstellung im IE
(Ein Refresh im HTML-Kopf liest die Datei neu ein.)
Der IE könnte bezüglich Vollbild-Darstellung Vorteile haben.
Ein weiterer Vorteil könnte die Verwendung von Frames sein, denn dann
musst Du nicht die ganze Seite aktualisieren, sondern nur die
betroffenen Bereiche.

Wenn Du auf dem einen Rechner auch einen Web-Server installieren
kannst, dann kannst Du die Datenaufbereitung auch ohne Access
durchführen.

Zum Thema ASP und Access bekommst Du auf den AEK-Seiten von
www.donkarl.com weitere Informationen.

mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Jörg Meier
2005-04-10 12:56:39 UTC
Permalink
Hallo Josef,

Hir noch ein kleiner Nachtrag:

Das mit dem application.echo kann ich wohl erst wieder am montag im netzwerk
austesten. Hier, lokal, macht es keinen Unterschied.
Aber ich glaube, dass das mit dem Bericht wohl das Richtige für mich ist.

Evtl. lasse ich noch die Bilder / Logos raus bzw. verknüpfe sie nicht
sondern bette sie in den Bericht ein. Müsste auch schneller sein, oder?
Post by Josef Poetzl
Zu "Auflösung anpassen" gibt es imo etwas in der FAQ.
Dazu habe ich noch eine Frage.
Ich hab jetzt mal den Code aus der FAQ genommen und wie folgt umgesetzt:

Im ausgeblendeten Formular ist beim Timer-Ereignsi jetzt folgender Code:

Application.Echo False
DoCmd.Close acReport, "RfuestAnzeige"
DoCmd.OpenReport "RfuestAnzeige", acViewPreview
If GetSystemMetrics(SM_CXSCREEN) = "800" And GetSystemMetrics(SM_CYSCREEN) =
"600" Then
Reports!RfuestAnzeige.ZoomControl = 68
ElseIf GetSystemMetrics(SM_CXSCREEN) = "1024" And
GetSystemMetrics(SM_CYSCREEN) = "768" Then
Reports!RfuestAnzeige.ZoomControl = 88
ElseIf GetSystemMetrics(SM_CXSCREEN) = "1280" And
GetSystemMetrics(SM_CYSCREEN) = "1024" Then
Reports!RfuestAnzeige.ZoomControl = 108
ElseIf GetSystemMetrics(SM_CXSCREEN) = "1400" And
GetSystemMetrics(SM_CYSCREEN) = "1050" Then
Reports!RfuestAnzeige.ZoomControl = 118
Else
Reports!RfuestAnzeige.ZoomControl = 100
End If
DoCmd.Maximize
Application.Echo True

In ein Modul1 habe ich dann folgendes kopiert:

Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As
Long
Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1

Jetzt gibt es aber beim Kompilieren in o.g. Code folgende Fehlermeldung:

Variable nicht deklariert bei "SM_CXSCREEN"

Kannst Du mir da noch mal helfen?

Danke

Jörg
Jörg Ostendorp
2005-04-10 13:08:36 UTC
Permalink
Hallo Jörg,
Post by Jörg Meier
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As
Long
Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1
Variable nicht deklariert bei "SM_CXSCREEN"
Definiere Deine Konstanten explizit als Public:

Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1

Viele Grüße
Jörg Ostendorp
Jörg Meier
2005-04-10 13:48:57 UTC
Permalink
Hallo Jörg,

vielen Dank.
Funktioniert jetzt.

Schönen Sonntag Nachmittag

Jörg

Loading...