1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. skyteddy

Beiträge von skyteddy

  • Wie komplexe GUI erzeugen?

    • skyteddy
    • 16. Mai 2011 um 16:42
    Zitat von BadBunny

    Dann würde ich es mit GDI+ machen, indem du die Grundfläche immer zeichnest und ggf. den passenden gedrückt Button, oder auch einfahc nur ein leicht durchsichtiges Rechteck mit der passenden Größe, über den Button legst den du klicken möchtest:


    Was meinst Du mit "über den Button legen"?

    Zitat von BadBunny

    Bild wird immer gemalt...


    Das Original, oder ein evtl das modifizierte Bild?

    Zitat von BadBunny

    Wenn Maus auf Bild klickt (bzw drüber ist ("Hover")) dann
    - das passende Hover/geklickt Bild auf die richtige Stelle malen
    - ein leicht durchsichtiges Rechteck (weiß nicht ob das gut aussieht)


    Ist mir nicht ganz klar, wie Du das meinst, aber dazu muss ich die Befehle von GDI+ erstmal sehen. Nur leider findet die Forumsuche nichts bei GDI+, denn das "+" wird ja immer als Steuerzeichen interpretiert. Ist das eine UDF?

    happy computing!
    R@iner

  • Wie komplexe GUI erzeugen?

    • skyteddy
    • 16. Mai 2011 um 16:27

    Super danke, das mit einzelnen Buttons ist mir klar. Ich meinte eigentlich eher, dass ich ein großes Bild nehme, wie z.B. das Bild der ganzen Fernbedienung und je nach Mausposition wird der Bereich heller oder zumindest soll es deutlich sichtbar sein, dass die Maus drüber ist. Eventuell noch einen dritten "State", wenn die Maustaste gedrückt ist.

    Und welcher Bereich heller wird, muss man halt vorher irgendwo definieren, welche Taste wo beginnt und wo endet. Und das "heller Bild" irgendwie gerechnet, also das Originalbild irgendwie durch Berechnung heller machen und dann die Stelle im Bild ausgetauscht und wieder darstelt. Wenn das bereichweise Austauschen nicht geht, dann notfalls das neu gezeichnet ganze Bild. Ich weiß nicht, ob sowas überhaupt geht?! Ich möchte immer noch vermeiden, dass ich das ganze Bild komplett in einzelnen Buttons zerlegen muss oder gar gleich neu zeichnen. Ich bin kein Grafik und auch kein Gui-Profi :(

    happy computing!
    R@iner

  • Wie komplexe GUI erzeugen?

    • skyteddy
    • 16. Mai 2011 um 15:41
    Zitat von BadBunny

    Ich weiß nicht ob das Thema bereits gelöst ist (Prfäix steht noch auf offen). Wenn das der Fall ist:


    Ne, das ist noch offen. So schnell bin ich auch nicht. :)

    Zitat von BadBunny

    Evtl über GDI+ oder mit 2 Bildern, einmal der gedrückte Button und einmal der normale, aber dann würde man die Bilder wieder einzelnd draufzeichnen müssen.


    Hast Du da nen Beispielcode oder kannst Du mir stichpunktartig sagen, wie Du das meinst?

    happy computing!
    R@iner

  • Wie komplexe GUI erzeugen?

    • skyteddy
    • 16. Mai 2011 um 11:12
    Zitat von Ryan

    Ich denke du könntest es lösen,indem du das Bild reinmachst, und dann sobald man auf das Bild klickt (OnEvent oder GuiGetMsg) die Mausposition abfragt. Dann musst du halt für jede Taste das Feld definieren, wo es halt als Taste zählt.


    Jo, das meinte ich mit "eigenen Eventhandler". Nur wie kann ich dann die Taste irgendwie hervorheben, beleuchten oder optisch so verändern, dass es aussieht, als würde sie gedrückt? Oder ist sowas dynamisch nicht möglich?

    Zitat von Ryan

    Und wegen der Größe verändern, wäre es nicht sinnvoller wenn du es eine konstante Größe machst, da sich sonst jenachdem wie man die Fenstergröße verändert das Bild verzerrt? (Geschweige denn das sich dann auch die Tasten Koordinaten verschieben..)


    Also man kann nen eigenen Resize-Handler schreiben, der eben das Bild immer im gleichen Verhältnis vergrößert oder verkleinert. Das mit den Tastenkoordinaten sollte dann dementsprechend angepaßt werden oder mit irgend einem Faktor multipliziert werden, dass die wieder passen.

    Zitat von tuttifrutti

    Oder nimm einfach GuiCtrlCreatePic und benutze die als Knöpfe.


    Das heißt aber, dass ich jeden Knopf erzeugen muss. Und auch ein Bild machen. Und wie sieht es dann bei einem Resizing des Fensters aus?

    Zitat von tuttifrutti

    Muss jetzt leider weg, kann dir morgen gerne ein beispiel machen.
    Auch wie du die bilder dann in eine dll machst :P


    Ich kenne nur die Möglichkeit, Icons via #AutoIt3Wrapper_Res_Icon_Add der Exe hinzuzufügen und später via GUICtrlSetImage(-1, @ScriptFullPath, <iconnummer>) das Icon nem Button zuzuweisen.

    happy computing!
    R@iner

  • Wie komplexe GUI erzeugen?

    • skyteddy
    • 15. Mai 2011 um 22:16

    Hallo Zusammen,

    ich habe einen netzwerkfähigen Samsung-Fernseher, den ich gerne via PC fernsteuern würde. Den Part, wie ich mit dem Fernseher kommunizieren muss, habe ich mittlerweile herausgefunden. Das würde pauschal schon mal funktionieren.

    Viel mehr Kopfzerbrechen macht mir die GUI, da ich mit GUIs prinzipiell kämpfe und ich zum anderen grafisch auch völlig unbegabt bin.

    Es gibt bereits eine Applikation in Java, die aber eine viel zu große GUI hat. Über 900 Pixel hoch, große Buttons. Ansich sehr schön, aber für mich zu wuchtig und leider stimmen viele Tasten nicht.

    Mein Idealziel wäre, wenn ich ne Gui hätte, die sich in der Größe verändern läßt, also durch das resizen des Fensters. Jetzt habe ich keine konkrete Vorstellung, wie man das am einfachsten realisieren könnte.

    Evtl. die Fernbedienung einscannen, als Image ablegen und dann irgendwie nen eigenen Eventhandler schreiben, der die Mausposition bestimmt und dadurch die betreffende Taste? Nur wie macht man sowas und wie mache ich es, dass man auch sieht, auf welcher Taste man ist und auch gedrückt hat? Gibt es da irgendwelche Möglichkeiten?

    Oder muss ich alle Buttons einzeln zeichnen, das wären ganz schön viele, oder wie macht man das? Und wenn Zeichnen, mit welchem Programm?

    Ich hab mal den Scan einer Samsung-Fernbedienung und 3 Screenshots der Java-App angehängt. Im 3. Foto sieht man, dass die Maus über dem Button "Tools" ist. Die wird beleuchtet.

    Besten Dank schon mal für alle Tipps und noch nen schönen Sonntag!
    R@iner

    Dateien

    SamsungAPP-picture1.png 75,54 kB – 0 Downloads SamsungAPP-picture2.png 126,15 kB – 0 Downloads SamsungAPP-picture3.png 101,03 kB – 0 Downloads Samsung-Fernbedienung.jpg 452,96 kB – 0 Downloads
  • Button "einrasten"

    • skyteddy
    • 5. Mai 2011 um 16:05

    Hallo Ihr Zwei,

    super vielen Dank!

    Die Lösung von RR04 brauche ich für den besagten Button, da man schön sieht, dass was eingerastet ist. Und die Lösung von Großvater kann ich für nen anderen Button gebrauchen!

    Danke Euch Drei nochmal!

    Gruß
    R@iner

  • Button "einrasten"

    • skyteddy
    • 5. Mai 2011 um 11:19

    Danke RR04, sehr interessant!

    Bei der $Checkbox3 mit dem Icon ist es optisch genau so, wie ich es mir für einen "normalen" Button auch wünschen würde. Da sieht man sehr schön das Eingedrückte. Aber ich will nicht noch ein icon suchen. :( Icon für "Überwachen".

    happy computing!
    R@iner

  • Button "einrasten"

    • skyteddy
    • 5. Mai 2011 um 10:33
    Zitat von progandy

    Dann ändere einfach die Schrift ;)


    Grins, dann bin ich wieder ganz am Anfang, denn genau so mache ich es bisher mit dem normalen Button. Ich wollte eigentlich nen optisch eingerasteten und gedrückten Knopf anstatt der Schrift.

    hast Du noch ne Idee?

    Dank Dir und viele Grüße!
    R@iner

  • Button "einrasten"

    • skyteddy
    • 5. Mai 2011 um 10:13
    Zitat von progandy

    pushlike + autocheckbox machen doch genau das, was du wünschst.


    In XP sieht man erst, wenn man mit der Maus weg geht, dass der Button etwas dunkel grauer wird. Beim nochmaligen Drücken wird er wieder etwas heller, also das grau. Das ist optisch kaum bzw. sehr schwer zu erkennen. Gibt es ne Möglichkeit, den optisch einrasten zu lassen, dass er so aussieht, als ob der Button gedrückt ist, also unten bleibt?

    Ich hab das auch in Win 7 ausprobiert. Dort wird der Button blau, wenn er gedrückt ist. Wenn er nicht gedrückt ist, ist er grau. Man kann dort aufgrund der anderen Farbe einen Unterschied sofort erkennen, in XP eher weniger.

    Hast Du noch ne Idee?

    Gruß
    R@iner

  • Button "einrasten"

    • skyteddy
    • 5. Mai 2011 um 09:48

    Hallo Andy,

    danke für die schnelle Antwort. Ich hab jetzt ne CheckBox mit Style $BS_PUSHLIKE drauf gemacht, es geht aber trotzdem nicht. Brauch ich da noch nen anderen Style dazu?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit]

    Example()

    [/autoit] [autoit][/autoit] [autoit]

    Func Example()
    Local $checkCN, $msg

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("My GUI Checkbox") ; will create a dialog box that when displayed is centered

    [/autoit] [autoit][/autoit] [autoit]

    ; $checkCN = GUICtrlCreateCheckbox("CheckBox 1", 20, 20, 120, 30, $BS_PUSHLIKE)
    $checkCN = GUICtrlCreateCheckbox("CheckBox 1", 20, 20, 120, 30, BitOR($BS_PUSHLIKE, $BS_AUTOCHECKBOX))

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState() ; will display an dialog box with 1 checkbox

    [/autoit] [autoit][/autoit] [autoit]

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

    [/autoit] [autoit][/autoit] [autoit]

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    EndFunc ;==>Example

    [/autoit]


    Danke schon mal.

    Gruß
    R@iner

  • Button "einrasten"

    • skyteddy
    • 5. Mai 2011 um 09:26

    Hallo Zusammen,

    ich hab mit GUICtrlCreateButton einen Button erzeugt, den ich gerne "einrasten" würde, also beim ersten drauf drücken soll er unten bleiben und beim nochmaligen Drücken soll er wieder hoch kommen. Bei den Push Button Styles hab ich nichts gefunden.

    Geht sowas?

    Besten Dank!
    R@iner

  • Iphlpapi.dll/GetAdaptersInfo liefert mit 64bit-Compilat bei LeaseObtained u. LeaseExpires immer 0

    • skyteddy
    • 12. April 2011 um 21:54

    Dank Dir Andy, jetzt blick ich es langsam. Das Erzeugen der Structur hab ich verstanden, und das mit dem Alligment, aber das _SubStruct_Get geht mir ab :( Da muss ich mich erst noch reinfieseln. Ich hock gerade auf der Leitung. Ich glaub, ich schlaf erst mal drüber. :)

    Dank Dir und gute Nacht!
    R@iner

  • Iphlpapi.dll/GetAdaptersInfo liefert mit 64bit-Compilat bei LeaseObtained u. LeaseExpires immer 0

    • skyteddy
    • 12. April 2011 um 20:45
    Zitat von progandy

    Wenn man nur mit einfachen Strukturen und Pointern auf Strukturen arbeitet, dann gibt es keine Probleme. Wenn jedoch eine Struktur eine andere Struktur direkt beinhaltet ohne Pointer, dann ist es sehr wahrscheinlich, dass du in Zukunft diese Funktionen verwenden musst.


    Ich hab jetzt verstanden, was Du da machst. Da ich aber ein Array füllen will, schmeiss ich das xml-Zeugs eh raus.

    Zitat

    Das liegt aber nicht am Compiler, es ist nur Zufall, dass es bisher funktioniert hat. Der eigentliche Grund ist, dass AutoIt Strukturen als Elemente von Strukturen nicht direkt unterstützt.


    Den Satz habe ich nicht ganz verstanden :( Es wird doch zur Laufzeit eine Structur erzeugt, und dementsprechend lang sollten doch die einzelnen Objecte werden. Ein DWORD_PTR ist halt je nach Architektur, dann halt einmal x Bytes groß und auf der x64 Architektur y Bytes groß.

    Oder wo ist da mein Denkfehler?

    Gruß
    R@iner

  • Iphlpapi.dll/GetAdaptersInfo liefert mit 64bit-Compilat bei LeaseObtained u. LeaseExpires immer 0

    • skyteddy
    • 12. April 2011 um 20:02

    @progandy:
    Damit ich das auch verstehe ... ist der Aufwand jetzt notwendig, weil der Compiler für x64 mürbe ist, oder ist das generell ein Problem bei der Verwendung von Structuren?
    Heißt das im Umkehrschluss, dass ich all meine Programm anpassen muß, die mit Structuren und Ptr auf Structuren arbeiten?

    Happy computing!
    R@iner

  • Iphlpapi.dll/GetAdaptersInfo liefert mit 64bit-Compilat bei LeaseObtained u. LeaseExpires immer 0

    • skyteddy
    • 12. April 2011 um 19:36

    Dank Dir!

    Da Du es auf Basis Deines alten Beispiels gemacht hast, muss ich erst mal genau schauen, wo Du welche Änderung (und vor allem warum) gemacht hast.
    Nichts für heute Abend, das wird ne Zeit dauern

    Dank Dir und happy computing!
    R@iner

  • Iphlpapi.dll/GetAdaptersInfo liefert mit 64bit-Compilat bei LeaseObtained u. LeaseExpires immer 0

    • skyteddy
    • 12. April 2011 um 17:40

    Hello again,

    danke, jetzt versteh ich auch DWORD_PRT. Ich hab das Script modifiziert und als x64 und x32 compiliert und aufgerufen. Das kommt raus:

    ipconfig:
    Lease erhalten. . . . . . . . . . : Dienstag, 12. April 2011 17:33:39
    Lease läuft ab. . . . . . . . . . : Freitag, 22. April 2011 17:33:39

    32bit:
    <LEASEOBTAINED>2011/04/12 15:33:39</LEASEOBTAINED>
    <LEASEEXPIRES>2011/04/22 15:33:39</LEASEEXPIRES>

    64bit:
    <LEASEOBTAINED>1970/01/01 00:00:00</LEASEOBTAINED>
    <LEASEEXPIRES>2011/04/12 15:33:39</LEASEEXPIRES>

    Irgendwas stimmt nicht, beim x64. Im LeaseExpires-Feld steht jetzt das Datum von LeaseObtained :(

    Happy computing!
    R@iner

  • Iphlpapi.dll/GetAdaptersInfo liefert mit 64bit-Compilat bei LeaseObtained u. LeaseExpires immer 0

    • skyteddy
    • 12. April 2011 um 17:03

    Huch, wieso dass denn? Einen PTR? Bist Du Dir sicher?

    Ich hab jetzt mal in der MSDN nachgeschaut. Dort steht Type: time_t.

    Und weiter unten:
    When using Visual Studio 2005 and later, the time_t datatype defaults to an 8-byte datatype, not the 4-byte datatype used for the LeaseObtained and LeaseExpires members on a 32-bit platform. To properly use the IP_ADAPTER_INFO structure on a 32-bit platform, define _USE_32BIT_TIME_T (use -D _USE_32BIT_TIME_T as an option, for example) when compiling the application to force the time_t datatype to a 4-byte datatype.

    Das heißt jetzt was genau? DWORD in AutoIt ist doch ein unsigned 32 bit integer. Oder braucht das nun auf x64 eine UINT64?

    Happy computing!
    R@iner

  • Neue AutoIt Version

    • skyteddy
    • 12. April 2011 um 16:39

    @progandy:
    Ja so ähnlich drückte sich Jos auch aus. Der Abschlusssatz zu dem Thema von ihm lautete sinngemäß: Es sei normal, dass es auch Entwicklungspausen gibt, mit wenig bis gar keiner Aktivität, denn schließlich ist die Entwicklung auch nur ein Hobby.

    Happy computing!
    R@iner

    PS: Magst Du da mal bitte einen Blick drauf werfen: Klick mich. Du hast den Bug wahrscheinlich gleich.

  • Array zu Liste

    • skyteddy
    • 12. April 2011 um 15:53

    Hallo,

    was meinst Du mit "soll später so aussehen"?

    So:

    [autoit]


    Global $MyArray[10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Global $MyString = ""

    [/autoit][autoit][/autoit][autoit]

    For $x In $MyArray
    $MyString &= "|" & $x & "|" & @CRLF
    Next

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite($MyString)

    [/autoit]

    happy computing!
    R@iner

  • Neue AutoIt Version

    • skyteddy
    • 12. April 2011 um 15:32
    Zitat von progandy


    Das hat nichts damit zu tun, das hängt mit Jons Beruf zusammen.


    Ah ok. Du als Insider kannst solche Dinge natürlich beurteilen.

    Jos macht ja am Wrapper, Tidy und Obfuscator immer mal weiter. Zu ihm habe ich sporadisch Kontakt, wenn ich wieder nen Bug finde. Aber er hat mit der eigentlichen AutoIt-Entwicklung wenig zu tun.

    Du hast doch engeren Kontakt dorthin. Was meinst Du denn, wann mal wieder eine neue Version kommt/kommen könnte?

    happy computing!
    R@iner

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™