Beiträge von BugFix

    Das hast du falsch verstanden. Normale Größenänderung ist selbstverständlich erlaubt.

    Ich verwalte die Fenster und Messages sowieso in eigener Window-Procedure. Ich möchte aber die 3 oben genannten Ereignisse verhindern. Auf Danach-Events zuzugreifen ist auch kein guter Weg. Die von mir erlaubte Größenänderung in gesetzten Grenzen (minSize, maxSize) beeinflusse ich bevor sie passiert (WM_SIZING).

    Denn wenn ich für ein Fenster eine maximale Größe definiere, ist ein Maximize fehl am Platz, ebenso die Änderung auf halben Bildschirm oder volle Höhe.

    Hi,

    ich möchte verhindern, dass ein Fenster seine Größe ändert bei folgenden Aktionen:

    • an Titelleiste greifen - an den seitlichen Desktoprand ziehen (Fenster bekommt halbe Bildschirmgröße, dockt am seitlichen Rand an)
    • an oberen/unteren Fensterrand greifen - an den oberen/unteren Desktoprand ziehen (Fenster bekommt volle Bildschirmhöhe)
    • Doppelklick Titel (Fenster wird maximiert) - das habe ich gelöst durch Auswertung: $_iMsg = $WM_NCLBUTTONDBLCLK And $_iwParam = $HTCAPTION

    Leider friert mein Winspector Spy beim Loggen von Messages ein, sodass ich das nicht nachverfolgen kann.

    Ich habe getestet, ob es eine Kombination mit WM_NCLBUTTONDOWN ist. Dass die Maustaste gedrückt ist am Fensterrand (zum Ziehen) kann ich damit auch erkennen. Nun fehlt mir aber der nächste Schritt. Die oben angeführten Ereignisse treten ja erst auf, wenn mit der gezogenen Maus der Bildschirmrand berührt wird. Ich kann mir nicht vorstellen, dass ich hier permanent berechnen muss, ob Mausposition mit Bildschirmrand übereinstimmt. Da sollte doch eigentlich eine Nachricht gesendet werden mit den Infos: Mouse hold-down moved-to Border (links,rechts,oben,unten).


    Bin für Anregungen dankbar.



    EDIT:

    Ich habe mal aus meinem Projekt den Code in ein einzelnes minimales Skript gezogen, zum besseren Verständnis:

    Jeder kennt das:

    Entwicklung eines Projektes, es kommen immer mehr Control hinzu und die Gui muss angepasst werden, was auch bedeutet, dass alle(viele) Controlpositionen angepasst werden müssen.

    Das war mir jetzt zu blöd und deshalb habe ich diese kleine Funktion zum Positionieren der Control geschrieben. Somit kann die Änderung bei Controls deutlich minimiert werden.


    Neue Dateien 06


    [RESERVIERT: BugFix]

    erledigt

    Wir kennen alle zur Genüge von unserer Forensoftware die Mitteilung: Ihre Sitzung ist abgelaufen, bitte melden Sie sich neu an.

    Diese Meldung basiert in der Regel aber nicht auf Problemen des Forums, sondern auf der Tatsache, dass der Browser selbst Änderungen am User-Agent vornimmt, was die Zertifizierung der Sitzung aufhebt.

    Aber das nur am Rande.

    Ich möchte für das automatische Laden lokaler Webseiten dieses Ereignis selbst auslösen. Also: Message an Server - Sitzung ist abgelaufen.

    Denn diese Nachricht kann ich in der Browsereinstellung als Trigger für automatisches Neuladen nutzen.

    Ich habe aber keinen Plan, wie ich selbst (per Programmbefehl) diese Nachricht auslösen kann. Hat da jemand Erfahrung?

    Die letzte mir bekannte war die 12USB Version von Opera wo man über die skin.ini Anpassungen machen konnte. Geht das auch mit den neueren USB Versionen?

    Ich verwende die Version 12.18.1872.0, da ich neben Portabilität auch Wert auf geringe Dateigröße lege. Früher war portabel in der Regel auch ein Garant für kleine Dateien - aber das interessiert heute scheinbar keinen mehr, da USB-Datenträger immer größer werden. Während die v12.18 nur 31 MB auf dem Datenträger belegt, braucht die aktuelle Version v72.0 64,5 MB!

    Aktuelle Versionen sind für offline Nutzung auch nicht erforderlich. Alles was da an Neuigkeiten drin ist betrifft im Wesentlichen Online-Sicherheit, also für meine Offline-Nutzung völlig uninteressant. Am Liebsten würde ich ja die Uraltversion des K-Meleon Browsers nehmen, der hatte nicht mal 2 MB, kann aber leider die neuesten Stylings nicht umsetzen.


    Falls jemand Bedarf hat, die Version kann hier herunter geladen werden.

    Oder verwende Html (bevorzuge ich):


    Scheint so als wäre das wirklich mal was wo keiner eine Lösung weis

    Weil es keine (native) Lösung gibt.

    Windows stellt keine Möglichkeit bereit, die Bildschirmauflösung per Kommandozeile zu ändern. Es gibt ein Tool: QRes, mit dem das möglich ist. Aber Vorsicht - das Tool prüft nicht, ob die übergebenen Werte von der Hardware realisierbar sind. Man muss also wissen, was man tut.

    die ich mittig auf dem Bildschirm platzieren möchte. Dafür nutze ich den Optionsparameter "2" (Center the tip at the x,y coordinates instead of using them for the upper left corner) und es klappt wie erwartet.

    Das hast du total falsch verstanden.

    Das Zentrieren bezieht sich auf den Text IM TOOLTIP!! und nicht auf die Platzierung auf dem Bildschirm, dafür sind Koordinaten erforderlich. Mit dem Default-Keyword statt der Koordinaten wird der Tip in der Nähe des Mauszeigers angezeigt.


    Edit: Nochmal deutlicher:

    Normal: die linke untere Ecke des Tooltip wird auf die x,y - Koordinaten gesetzt.

    $TIP_CENTER: die Mitte des Tooltip wird an die x,y - Koordinate gesetzt


    Edit_2:

    Mit einer eigenen (gekapselten) ToolTip Funktion kann man das recht elegant lösen:

    $TIP_FORCEVISIBLE wird außer bei Anzeige in der Mitte immer benötigt. Falls die Option $TIP_CENTER verwendet wird, könnte sonst der Tip ausserhalb des Bildschirmes dargestellt werden. Das wird so verhindert.

    habe dazu was getippt, um an den Style zu kommen

    Da hast du mich falsch verstanden. Den Style an einer bestimmten Position des Editors kann man mit den Api-Funktionen auslesen:

    editor.StyleAt[position]

    Aber man kann nicht abfragen, welchen Style au3 oder lua für comment.box verwenden (bei AutoIt: 2, bei Lua: 1).

    Sofern das nur für AutoIt und Lua genutzt wird, ist das OK. Vielleicht mache ich das, indem ich die Togglefunktion nur für SciTE und Lua aktiv schalte.

    Wenn nichts markiert wurde, sollte es egal sein, wo das Caret steht, solange es sich in einer Start-/Endzeile oder sonstwo innerhalb eines Kommentarblocks befindet, um den Kommentarblock wieder zu entfernen.

    Das halte ich nicht für sehr sinnvoll. Wenn zuviel Möglichkeiten sind, sind zuviel Fehlinterpretationen möglich. "Der Cursor muss in seiner Zeile oder einer der folgenden Zeilen comment.start finden". Das entspricht auch unserem visuellen Vorgehen: Von oben nach unten.

    Die Position innerhalb eines Kommentarblocks zu erkennen, kann ich zwar sicher für Lua und AutoIt (weil ich da weiß, welcher Style jeweils verwendet wird), aber eben nicht allgemeingültig, weil nirgendwo ausgelesen werden kann, welchen Style der jeweilige Dateityp für Blockkommentare nutzt. Das ist in der Lexer.dll definiert. In den Properties sieht man das nur anhand der Kommentare, die aber auch unterschiedlich und somit nicht zuverlässig sind.

    Wo ich noch mitgehen könnte: Cursor vor/in comment.start Zeile oder in comment.end Zeile

    Allerdings wäre das nicht mehr kongruent in der Anwendungsweise, dann sollte man lieber sagen: in comment.start Zeile oder in comment.end Zeile

    Was meinst du?


    Wenn sich in der Selektion eine Start-/Endzeile befindet, jedoch kein Gegenstück dazu, sollte das als Fehler gewertet und kein Kommentarblock erzeugt werden.

    Ähm, der Anwender hat also ohne Sinn und Verstand ein einzelnes #cs oder #ce in sein Skript geklatscht und das soll ich abfangen? In kleinen Skripten könnte man das tun, aber stell dir mal ein paar tausend Zeilen Code vor. Es muss das gesamte Skript vom Anfang bis zur Cursorposition gescannt werden um die korrelierenden start-end Zuordnungen zu erhalten. Das halte ich nicht für erstrebenswert. Etwas an Denkprozessen darf man ruhig auf den Anwender übertragen. :whistling:


    Ich denke, comment.box.middle ist nicht dazu gedacht, um Einrückungen zu definieren, sondern um dem Kommentar ein oder mehrere druckbare Zeichen voranzustellen.

    OK, da kann ich mitgehen.


    Anhand folgender Properties kann bestimmt werden, ob bzw. wie comment.box.middle eingerückt wird:

    Ja OK. Doch trotzdem muss an irgendeiner Stelle definiert werden: Ja, ich will (auch Kommentarblöcke) einrücken oder eben nicht. Denn ich kann ja nicht vom Anwender unabhängig einfach festlegen, dass eingerückt wird. Also ist zumindest eine weitere Property erforderlich, z.B. comment.box.indent.filepattern=0/1

    comment.box.tab.alternation=@Tab ; <== Für diese Variable erkenne ich auch bei aller Anstrengung keinen Mehrwert!

    Da nur sichtbare Zeichen als Property gesetzt werden können, muss der Anwender über ein Ersatzzeichen mitteilen, dass ein Tab zur Anwendung kommen soll.

    Ich hätte auch festschreiben können: Soll ein Tab als box.middle verwendet werden so muss als Zeichen dafür "T" verwendet werden. In diesem Fall wäre die Property tatsächlich überflüssig.

    Da ich aber dem Anwender freie Wahl bei der Definition für seine Tab-Variable ermöglichen will ("@TAB", "tab", "BunteKuh",...) muss für den Fall, dass Tab verwendet werden soll das/die entsprechende/n Zeichen dort definiert werden und in box.middle wird darauf verwiesen: comment.box.middle.au3=$(comment.box.tab.alternation)

    Im Skript prüfe ich:

    comment.box.middle. nicht-leer ? --> comment.box.middle == comment.box.tab.alternation ? --> OK, TAB soll als box.middle verwendet werden.

    ...und das passiert dann damit... das Exit hinter #CE ist zu viel und das Exit darüber dürfte nicht mit im Kommentarblock sein!

    Du hast sowas von Recht, und ich bin froh dich als Tester zu haben. :thumbup:

    Ich hatte zwar im Vorfeld alle möglichen (und vor allem unmöglichen :D ) Markierungsvarianten überlegt, aber dann 2 vergessen umzusetzen:

    Das ist nun korrigiert. (poste es gleich)


    NEU v 0.8 - s. Post #1


    - Start-/Endmarkierung mitten in der jeweiligen Zeile (Zeile gehört zum Block)

    - Endmarkierung in nicht leerer Zeile am Anfang (Zeile gehört nicht zum Block)

    Wie heißen denn Lua-Dateien, in die man Funktionen schreibt, die dann in anderen Lua-Dateien mit "requiere" eingebunden werden

    Das kommt drauf an. Schreibst du ein Modul, dann ist es ein Modul. Schreibst du eine Library, dann ist es eine Library.

    Die Unterscheidung ist auf den ersten Blick nicht so deutlich.

    Eine Bibliothek stellt i.A. eine Funktionssammlung dar (OHKfuncs.lua ist eine Bibliothek mit dem Globalen Table OHK, auf das nach dem Laden aus allen Skripten zugegriffen werden kann). Die Funktionen können aber ebensogut einzeln in der Datei vorhanden sein (nicht in einem Table)

    Ein Modul ist an sich auch eine Bibliothek - aber mit einem Unterschied: Alle Funktionen werden in einem lokalen Table erstellt. Dieses Table wird dann am Ende der Datei exportiert:


    -- z.B. "MeinModul.lua"

    local MeinModul = {

    f1 = function() .... end,

    f2 = function() .... end,

    f3 = function() .... end,

    ...

    }

    return MeinModul


    Schau mal ins Modul-Tutorial.

    Können Funktionen in anderen Lua-Scripts mit "requiere" benutzt werden, die in der eingebundenen Bibliothek mit "local" deklariert wurden?

    Nur wenn sie als Modul erstellt wurden. Alles was lokal ist, kann in anderen Dateien nicht erkannt werden, wenn es nicht exportiert wird.

    Übrigens nicht unwichtig: Im Gegensatz zu AutoIt sind Schleifenvariablen auch lokal. Man braucht sie zwar nicht deklarieren, aber ausserhalb der Schleife existieren sie nicht mehr.

    Was ist der Unterschied zwischen requiere "MyModule", LoadLuaFile("MyModule.lua") und LoadUserLuaFile('MyModule.lua')?

    LoadLuaFile und LoadUserLuaFile machen beide dasselbe: dofile

    Die beiden Funktionen verwenden nur einen vordefinierten Pfad (bzw den Pfad als Zusatzparameter mit Default-Wert), sodass nur der Dateiname übergeben werden muss.

    LoadUserLuaFile hatte ich erstellt um damit direkt eigene Dateien nur mit Angabe des Dateinamens aus dem Lua.User.Scripts.Path zu laden.

    Der Unterschied zu require? - Lies selbst:


    Lua offers a higher-level function to load and run libraries, called require. Roughly, require does the same job as dofile, but with two important differences. First, require searches for the file in a path; second, require controls whether a file has already been run to avoid duplicating the work. Because of these features, require is the preferred function in Lua for loading libraries.