September 24, 2020, 03:40:22

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Screenshot per Rechteck-Auswahl

Begonnen von crystal, August 15, 2020, 13:32:38

⏪ vorheriges - nächstes ⏩

crystal

Hallo,
heute Mal eine Frage von mir.

Ich möchte in einem Formular einen Button einbauen und nach Klick darauf
1. ein Rechteck (einen Rahmen) aufziehen
1a. Maustaste drücken: eine Ecke des Rechtecks markieren
1b. Maustaste loslassen: gegenüber-liegende Ecke des Rechtecks markieren
1c. eventuell das Rechteck genauer positionieren/vergrößern/verkleinern
2. (nach Maustaste auf oder mit einem 2. Button): Rechteck-Bereich (also den "grafischen" Bereich des Formulars, der durch das Rechteck umrahmt wird) kopieren
3. in JPG konvertieren
4. unter vorgegebenem Namen speichern.

Da ich das stark automatisieren möchte (insbes. Dateiname, aber auch z. B. letzte Position/Größe des Rechtecks), möchte ich keine externen Snapshot-Programme nutzen, es sei denn, diese wären vollständig via VBA zu steuern.

Natürlich habe ich gegoogelt, aber ich finde keine passende Lösung. Vieles funktioniert in VB, aber eben nicht in VBA. Vieles benutzt Keypress-Funktionen - eher nicht so geeignet. Vieles bezieht sich auf Excel-VBA - nicht kompatibel mit Access. Vieles nutzt das neue Snapshot-Prog. von W10, ist aber nicht von VBA aus zu steuern.

Viele Lösungen kopieren Bereiche per BitBlt in compatible Bitmaps und dann in die Zwischenablage. Wie kann ich eine compatible Bitmap auch ohne Clipboard gleich in jpg wandeln und speichern?

Vielleicht weiß jemand Rat. Vielleicht sehe ich inzwischen auch wegen der vielen Recherchen "den Wald vor lauter Bäumen nicht".

Gruß,
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...


markus888

Auch meiner Sicht ist es relativ sinnlos dir zu diesem Thema was zu schreiben.

Siehe: https://www.access-o-mania.de/forum/index.php?topic=24940.msg147585#msg147585

Aber ja grundsätzlich ist das alles kein Problem, wenn man die Grundlagen von VBA und insbesondere das Programmieren mit API beherrscht.
Sprich - bei API muss man verstehen, wie man Schnittstellen verwendet und welche Datentypen sich dahinter verbergen. Die Konzepte zu einem Thema kann man eh in Tutorials lesen, oder man liest in die Beschreibungen von Microsoft ein. Kostet natürlich alles Zeit.

Falls nicht, ist das ein sinnloses Unterfangen, falls die Bereitschaft zum eigenen Studium fehlt.
10 Jahre Access

crystal

@markus888

Danke für deine "sehr konstruktive" Antwort.

Ich habe durchaus ein fundiertes Grundlagen-Wissen zu VBA und zur API-Programmierung.
Wenn du dies so großspurig in Frage stellst, hast du das Problem ja vermutlich schon längst gelöst. Ein paar konstruktive Tipps - aus deiner Erfahrung - wären da sicher hilfreich, immerhin mag es auch andere Leser dieses Forums geben, die an einer fundierten Antwort interessiert wären. Ich vermute aber, dass du keine passende Lösung parat und hier nur allgemein geantwortet hast.

Im Übrigen: gerade weil ich ja nicht alles weiß, wende ich mich mit dieser Frage an das Forum. Das ist ja auch der Sinn des Forums - oder sollte es sein.

Selbstherrlich eine fehlende Bereitschaft zum Selbst-Studium zu unterstellen, ist eher als "frech" und arrogant einzustufen.

Was nutzt die Aussage "bei API muss man verstehen...", wenn der Ersteller eines Threads (ich) wohl genau hier ein Problem hat und darauf hofft, ein paar einfache Tipps von einem erfahrenen "Access-Profi" ("10 Jahre Access") zu erhalten. (Ja, "Access-Profi" wird man allein schon durch die Zahl der Nachrichten, die man hier geschrieben hat. Ich bin auch einer - obwohl ich das für mich nicht reklamieren würde. "10 Jahre Access" - da kann ich mehr bieten. Bringt also auch nichts, wenn man nicht bereit ist, sein Wissen zu teilen.)

So, wie du arrogant auf meine Frage geantwortest hast, möchte ich den Vorwurf erheben, dass du den Sinn eines solchen Forums vielleicht nicht recht verstanden hast: hier stellen Menschen Fragen, die nicht weiter kommen und denen es an speziellem Detailwissen mangelt. Mag sein, dass der eine oder andere sogar Basis-Wissen vermissen lässt - wichtig ist doch, konstruktiv und motivierend helfen zu wollen. Verweise auf "Selbststudium", Bücher oder "das Internet" sind allgemein nicht gerade sehr hilfreich.

Zwischen meiner ersten Frage zu diesem Thema und der jetzigen liegt ja schon eine gewisse Zeit, in der ich mich durch unzählige Webseiten gewühlt habe. Das musst du mir schon glauben. Aber VBA ist eben nicht VB (Excel-VBA auch nicht Access-VBA) und nicht alle "Lösungen", die ich so gefunden und probiert habe, funktionieren auch (z. T. sind sie unvollständig, haben entspr. Verweise zu erwähnen vergessen oder API-Declares fehlen).

Aber vermutlich hast du diese Nachricht gar nicht bis hier gelesen.

Gruß trotzdem,
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

markus888

August 16, 2020, 15:06:45 #4 Letzte Bearbeitung: August 16, 2020, 15:12:43 von markus888
Wenn du dich grundlegend auskennst, dann Antworte einfach, wenn dir wer schreibt.
Dieses Verhalten ist für mich letztklassig.

Zeig einfach deinen Code und erkläre wo du nicht weiter kommst und was du nicht verstehst.
Liefere außerdem Hintergründe warum du etwas tun willst.
Dann gibts auch eine Chance auf konkrete Hilfe.

Wenn du außerdem einen Code hast, den du nicht nutzen kannst -
dann zeige den Code und deine Umsetzung und erkläre wo konkret es klemmt.
Die Aussage "es geht nicht" ist sinnlos.
10 Jahre Access

crystal

@markus888
deine Antwort ist wie erwartet...
Didaktik:
konkrete Hilfe:
...
ZitatDieses Verhalten ist für mich letztklassig.

Du sagst es ja sogar selbst.

Deine ganze Antwort ist ja "sowas von". Bitte liebe Moderatoren: löscht diesen Quatsch.
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

ebs17

Aus meiner Anfängerecke ohne langwierige Recherche:
Zitat1. ein Rechteck (einen Rahmen) aufziehen
Ein (Access)Rahmen ist ein Steuerelement und hat rein gar nichts damit zu tun geschweige denn kann auswählen, was da eingeschlossen wird vom Formular und dessen Steuerelementen. Eine solche Bereichsauswahl könnte ich mir vorstellen, wenn ich auf einem Bild vom Formular arbeite.
Damit fehlt dem Anliegen die Basis.


Mit freundlichem Glück Auf!

Eberhard

crystal

Welch weise Antwort, die auch noch so zielgerichtet weiterführt!
Somit fehlt's an (auszusuchen).
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

ebs17

Zitatzielgerichtet weiterführt
Der Hinweis auf Sackgasse oder auch auf erst Bild ist schon eine Zielführung (für den, der es versteht).

Meine Intension wäre schon die Verwendung eines richtigen Snapshot-Tools, gesteuert über VBA und/oder Kommandozeilen. Für die wäre jede Anwendung nur Hintergrund, mit dem man arbeiten kann.
Solches hast Du aber praktisch ausgeschlossen, also lohnt da nicht mal ein weiteres Nachdenken.

Dein Stil ist übrigens sehr geeignet, weitere Helfer einzuladen ... viel Glück dabei.
Mit freundlichem Glück Auf!

Eberhard

crystal

Letztes Mal und OFF TOPIC

Ich habe leider vor wenigen Tagen eine Krebs-Diagnose erhalten. Vielleicht waren meine jüngsten Antworten deshalb etwas heftig.

Ich ziehe mich also offiziell aus diesem Forum zurück. Mögen andere, die sich für so gut halten und so viele "didaktisch wohl durchdachte Antworten" geben und gegeben haben, ihren vermutlich sogar wohl gemeinten Senf weiter zum Besten geben. Ich jedenfalls nicht mehr. Von Beileids-Bekundungen und Hurra-Rufen bitte ich abzusehen.

Allen anderen gebe ich hier schon Mal die Antwort auf ca. 80% der Fragen: bitte selbst nachdenken, im Internet recherchieren und NICHT darauf hoffen, von Möchtegern-Gurus in diesem Forum eine substantielle, weiterführende Antwort zu erhalten. Es gibt in diesem Forum aus meiner persönlichen Sicht und Erfahrung nur 2 oder 3 Mitglieder, die sich wirklich und redlich bemühen, auf die "dummen" Fragen der "einfachen" Anwender einzugehen, den Fragesteller akzeptieren, dessen Mut honorieren, sich mit ihrer Frage überhaupt an ein Forum zu wenden und nicht nur darauf bedacht sind, mit nichtssagenden, inhaltsleeren Nachrichten ihren Score zu verbessern. Viele andere sind kaum in der Lage, sich in die Situation des Fragestellenden einzudenken oder es auch nur zu versuchen und "glänzen" mit Plattheiten statt mit Antworten, die auch geeignet wären, anderen weiter zu helfen.

Ich persönlich habe mich stets bemüht, es etwas anders zu machen, nachdenkliche Antworten oder solche, die zum Nachdenken anregen (sollten) und Kommentare zu geben und auch mal kritisch zu sein. Gelegentlich wurde ich sogar gelobt, oft aber auch angegriffen.

Mein "letzter Wunsch" an dieses Forum und seine Stamm-Mitglieder ist: bitte bemüht euch deutlich stärker, euer Selbst in den Hintergrund zu stellen und zu lernen bzw. zu akzeptieren, dass ihr als Ratgeber gefordert seid und nicht als besserwissende "Oberlehrer", die auf die "Schüler" verachtend hinunter schauen. Jeder, der sich über diesen Satz aufregt, sollte um so genauer darüber nachdenken. Keiner von euch hat auch nur im entferntesten eine Ahnung davon, wie man "2 hoch e durch lambda Photonen verschränken kann".

@Mods: bitte löscht meinen Account mit sofortiger Wirkung. Gerne werde ich die nächste Zeit noch schauen, was im Forum "so abgeht", aber ich möchte nicht mehr antworten können.

Adieu Access-O-Mania, dies ist nun mein letzter

.

Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

PhilS

Das wichtigste zuerst:
Ich wünsche dir gute und vollständige Genesung und die Kraft mir deiner Situation umzugehen.


Alles weitere ist weniger wichtig.
Zitat von: crystal am August 16, 2020, 17:48:26Mein "letzter Wunsch" an dieses Forum und seine Stamm-Mitglieder ist: bitte bemüht euch deutlich stärker, euer Selbst in den Hintergrund zu stellen und zu lernen bzw. zu akzeptieren, dass ihr als Ratgeber gefordert seid und nicht als besserwissende "Oberlehrer", die auf die "Schüler" verachtend hinunter schauen. Jeder, der sich über diesen Satz aufregt, sollte um so genauer darüber nachdenken. Keiner von euch hat auch nur im entferntesten eine Ahnung davon, wie man "2 hoch e durch lambda Photonen verschränken kann".

Auch wenn die Formulierung etwas provokant ist, sehe ich im Kern dieser Aussage einige Wahrheit.

Zitat von: crystal am August 16, 2020, 17:48:26@Mods: bitte löscht meinen Account mit sofortiger Wirkung. Gerne werde ich die nächste Zeit noch schauen, was im Forum "so abgeht", aber ich möchte nicht mehr antworten können.
Es wäre mir lieber, wenn du in deinem Profil (Actions->Delete this Account) selbst die Löschung anstoßen würdest. Dann ist im System dokumentiert, dass du selbst den Account gelöscht hast. Ich bestätige/vollende die Löschung dann i.d.R. mit ein paar Tagen Karenzzeit.
Eine "anlasslose" Löschung ist bisher ausschließlich Fake-Accounts und Spammern vorbehalten.
Solltest du dies hier nicht mehr lesen, oder aus anderen Gründen deinen Account nicht selbst löschen, werde ich deinem Wunsch aber in einigen Tagen nachkommen.

Herzliche Grüße
Philipp
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

crystal

Lieber Philipp,

herzlichen Dank für deine Worte.

Sicher ist die Krebs-Diagnose eine sehr schlechte Nachricht für mich, aber es kommt eben, wie es soll.

Vielleicht ist es auch etwas "feige", mich deshalb aus diesem Forum zurück zu ziehen, aber ich möchte schlicht mögliche Belastungen durch eher negative oder nichtssagende Antworten zu meinen Beiträgen vermeiden.

Ich habe in diesem Forum schon teils recht heftige Reaktionen und Diskussionen gesehen, die ich stets als konstruktiv betrachtet habe. Andererseits gab es auch leider sehr häufig Antworten (von einer sehr begrenzten Zahl immer derselben Teilnehmer), die von "bemühe doch mal eine der bekannten Suchmaschinen" bis "ich habe eine Lösung, vielleicht kommst du selbst drauf" oder "bitte zuerst Bücher kaufen" reichen.

Das ist sehr schade.

Mein Verständnis dieses Forums war es immer: versuche, zu helfen, versuche, Hilfe zur Selbsthilfe zu leisten, gebe Antworten auch auf "einfachste" Fragen, respektiere Fragende und Fragen, nehme dich selbst zurück und stelle dich nicht über andere, gebe dein Wissen bereitwillig weiter - helfe so, dass andere nicht frustriert werden, sondern das Forum Access-O-Mania in freudiger, positiver Erinnerung behalten, nach dem Motto: "Access-O-Mania: da wirst du geholfen".

Leider sehen das ein paar andere scheinbar anders und ich spüre in ihren Antworten oft eine Art von Verachtung und Selbstherrlichkeit. Ich frage mich, warum sie dann überhaupt "Antworten" geben, wenn deren Informationsgehalt einfach Null ist.

Ich hoffe sehr, dass in Zukunft viele positive Menschen aktiv an diesem Forum teilnehmen und allen, die auf dem Wege sind, hilfreich zur Seite stehen. Es gab in den vergangenen Wochen einige neue Mitglieder, die erstaunliche Entwicklungen gemacht und hier durch ihre neuen Fragen und Beiträge dokumentiert haben. Das ist sehr schön und lässt mich hoffen, dass einige der "Alten" vielleicht endlich verstehen, was der Sinn eines solchen Forums ist.

Ich schreibe dies nicht als persönliche Nachricht, damit andere eben auch die Möglichkeit haben, es zu lesen und ihr Verhalten vielleicht zu überdenken.

Ferner habe ich mich entschlossen, meinen Account doch nicht zu löschen, werde aber in Zukunft erheblich weniger schreiben - bis ich dann irgendwann ganz damit aufhöre oder aufhören muss.

Herzliche Grüße an alle,
crystal

PS: ich glaube nicht, je noch eine konstruktive Antwort zu meiner ursprünglichen Frage zu erhalten. Aber: die Hoffnung stirbt zuletzt...

PPS: Vielen Dank für dein herausragendes Engagement - sowohl als Moderator als auch als Techniker.
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

PhilS

Zitat von: crystal am August 15, 2020, 13:32:38Ich möchte in einem Formular einen Button einbauen und nach Klick darauf
1. ein Rechteck (einen Rahmen) aufziehen
1a. Maustaste drücken: eine Ecke des Rechtecks markieren
1b. Maustaste loslassen: gegenüber-liegende Ecke des Rechtecks markieren
1c. eventuell das Rechteck genauer positionieren/vergrößern/verkleinern

Für den obigen Teil würde ich wahrscheinlich tatsächlich ein Rechteck-Steuerelement verwenden, das du mit den Mausaktionen entsprechend positionierst. Das sollte eigentlich relativ einfach machbar sein.

Zitat von: crystal am August 15, 2020, 13:32:382. (nach Maustaste auf oder mit einem 2. Button): Rechteck-Bereich (also den "grafischen" Bereich des Formulars, der durch das Rechteck umrahmt wird) kopieren
3. in JPG konvertieren
4. unter vorgegebenem Namen speichern.
[...]
Viele Lösungen kopieren Bereiche per BitBlt in compatible Bitmaps und dann in die Zwischenablage. Wie kann ich eine compatible Bitmap auch ohne Clipboard gleich in jpg wandeln und speichern?
Ich hatte in diesem Zusammenhang schon bei deinem vorigen Thread zu dem Thema auf das GDIPlus-Modul von Sascha Trowitzsch verwiesen. Wie gesagt leider im Moment nicht direkt von der Quelle erhältlich, aber man findet es z.B. in diesem Thread des MOF. In dem Thread ist auch Beispielcode zu finden, der schon relativ nah an dem dran sein dürfte, was du im Anschluss an "BitBlt in compatible Bitmaps" brauchst, um den Screenshot als PNG oder JPG zu speichern.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!