Hallo,
kurze knappe Frage, wie kann ich beim UDF GuiEdit die Schriftart ändern?
GUICtrlSetFont ($Textfeld, 14, 400 ,1) funktioniert da irgendwie nicht!
Danke schon mal für die Hilfe
Michael
Hallo,
kurze knappe Frage, wie kann ich beim UDF GuiEdit die Schriftart ändern?
GUICtrlSetFont ($Textfeld, 14, 400 ,1) funktioniert da irgendwie nicht!
Danke schon mal für die Hilfe
Michael
Hallo MichaelB.
aber natürlich kann man in einem Edit-Control damit die Fonteigenschaften verändern, siehe
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=TextBausteine.exe
#AutoIt3Wrapper_Compression=4
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include<WindowsConstants.au3>
#include <GuiComboBox.au3>
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.6.1
Author: AutoBert: http://www.autoit.de/index.php?page…4445#post164445
Skriptbeispiel für den Umgang mit INI-Files und ComboBox und Edit
#ce ----------------------------------------------------------------------------
Const $sElect = "Textbaustein auswählen"
Global $sTB, $sIni = @ScriptDir & "\TextBausteine.ini"
If Not FileExists($sIni) Then ;Ini-File vorbelegen
$sData = "Hilfe=Hier kannst du dir die Hilfe herunterladen." & @CRLF
$sData &= "Tutorial=Hier gibt es ein Tutorial: http://wiki.autoit.de/wiki/index.php/Tutorial" & @CRLF
$sData &= "richtigPosten=Autoit-Anfänger Guide / Wie poste ich richtig??" & @CRLF
$sData &= "Buch peethebee=Sehr hilfreich ist auch das Buch von @peethebee"
IniWriteSection($sIni, "Bausteine", $sData)
EndIf
Global $sTitel = 'Beispiel für wiederkehrende Textbausteine'
[/autoit] [autoit][/autoit] [autoit]Local $hMainGui = GUICreate($sTitel, 800, 520, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $hMainGui gespeichert
;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
Global $hedtBox = GUICtrlCreateEdit("", 10, 10, 600, 480, BitOR($ES_WANTRETURN, $ES_MULTILINE))
GUICtrlSetFont(-1,14,1200)
;erzeugt ein Edit Steuerelement die zurückgegebe ID wird in der Variablen $hedtBox gespeichert
GUICtrlSetResizing(-1, $GUI_DOCKBORDERs)
;verankert das Inputfield an allen Seiten
;beim Resizen bleibt es dadurch auf seiner Position und den Abstand zu den Seiten es ändert lediglich Breite und Höhe
Global $hcboTB = GUICtrlCreateCombo("", 620, 10, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnAdd = GUICtrlCreateButton("&Hinzufügen Textbaustein", 620, 40, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnDel = GUICtrlCreateButton("&Löschen Textbaustein", 620, 70, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnSave = GUICtrlCreateButton("Änderungen &speichern", 620, 100, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnToClip = GUICtrlCreateButton("&ins ClipBoard", 620, 150, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnFromClip = GUICtrlCreateButton("&aus ClipBoard", 620, 180, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnClear = GUICtrlCreateButton("&Neu (leere EditBox)", 620, 210, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnExit = GUICtrlCreateButton('Be&enden', 620, 260, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
read_INI()
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $hbtnExit
GUIDelete($hMainGui)
Exit
Case $hcboTB ;ComboBoxauswahl wurde geändert
show_Selection()
Case $hbtnAdd ;Hinzufügen Textbaustein"
_addTB()
Case $hbtnDel ;"&Löschen Textbaustein"
$sDel = GUICtrlRead($hcboTB) ;Kurzbezeichnung holen
IniDelete($sIni, "Bausteine", $sDel) ;aus INI löschen
GUICtrlSetData($hcboTB, "") ;ComboBox leeren
read_INI() ;Routine zum INI einlesen aufrufen
show_Selection() ;Routine zum anzeigen der Selektion aufrufen
Case $hbtnSave ;"Änderungen &speichern"
If GUICtrlRead($hcboTB) = $sElect Then
;es ist kein Textbaustein selektiert
GUICtrlSetState($hbtnClear, $GUI_DISABLE)
GUICtrlSetData($hedtBox, "")
_addTB() ;
Else
$sId_TB = GUICtrlRead($hcboTB) ;Kurzbezeichnung holen
_writeTB($sId_TB) ;Routine zum Schreiben aufrufen
EndIf
Case $hbtnToClip ;"&ins ClipBoard"
ClipPut(GUICtrlRead($hedtBox))
Case $hbtnFromClip ;"&aus ClipBoard"
;Daten aus Clipboard holen EditBox wird mit Clipboard überschrieben
GUICtrlSetData($hedtBox, ClipGet())
Case $hbtnClear ;"&Neu (leere EditBox)"
GUICtrlSetData($hcboTB, $sElect,$sElect)
show_Selection() ;Routine zum anzeigen der Selektion aufrufen
EndSwitch
WEnd
Func read_INI() ;Ini einlesen
$list1 = IniReadSection($sIni, "Bausteine")
If IsArray($list1) Then ;nur wenn Array da ansonsten Absturz
For $i = 1 To $list1[0][0] ;von 1 bis zum letzen Eintrag im Array
GUICtrlSetData($hcboTB, $list1[$i][0]) ;in ComboBox eintragen
Next
EndIf
_GUICtrlComboBox_InsertString($hcboTB, $sElect, 0) ;$sElect (= "Textbaustein auswählen") an erster Stelle einfügen
_GUICtrlComboBox_SetCurSel($hcboTB, 0) ;1 Eintrag selektieren
EndFunc ;==>read_INI
Func _addTB()
$write1 = GUICtrlRead($hedtBox)
If $write1 <> "" Then ;nur wenn im Edit etwas eingetragen
$write2 = InputBox("Baustein verwalten unter", "Bitte Kurzbegriff eingeben")
If $write2 <> "" Then ;nur wenn ein Kurzbegrigg eingegeben
_writeTB($write2) ;Routine zum schreiben aufrufen
GUICtrlSetData($hcboTB, $write2, $write2) ;in ComboBox eintragen und gleichzeitig selektieren
EndIf
EndIf
show_Selection() ;Routine die die Selektion zeigt aufrufen
EndFunc ;==>_addTB
Func _writeTB($sId_TB) ;Routine zum Screiben in INI
;hier werdeb die Zeichen @CR (Wagebrücklauf) @LF Zeilenumbruche und @CRLF getauscht
$write1 = GUICtrlRead($hedtBox)
$write1 = StringReplace($write1, @CRLF, "_%CRLF%_")
$write1 = StringReplace($write1, @CR, "_%CR%_")
$write1 = StringReplace($write1, @LF, "_%LF%_")
If $write1 <> "" Then IniWrite($sIni, "Bausteine", $sId_TB, $write1) ;wenn nicht leer in INI schreien
EndFunc ;==>_writeTB
Func show_Selection() ;Selekzion anzeigen
If GUICtrlRead($hcboTB) = $sElect Then ;es ist kein Textbaustein asgewählt
GUICtrlSetState($hbtnClear, $GUI_DISABLE) ;Leeren-Button disablen
GUICtrlSetData($hedtBox, "") ;also EDIT leeren
Else
GUICtrlSetState($hbtnClear, $GUI_ENABLE) ;Leeren-Button enablen
$sId_TB = GUICtrlRead($hcboTB) ;Kurzbezeichnng holen
;ConsoleWrite("ausgewählt: " & $sId_TB & @CRLF) ;Kontrolausgabe in Console
$write1 = IniRead($sIni, "Bausteine", $sId_TB, "") ;Baustein aus INI lesen
;hier werdeb die Zeichen für @CR (Wagebrücklauf) @LF Zeilenumbruche und @CRLF zurück getauscht
$write1 = StringReplace($write1, "_%CRLF%_", @CRLF) ;
$write1 = StringReplace($write1, "_%CR%_", @CR)
$write1 = StringReplace($write1, "_%LF%_", @LF)
GUICtrlSetData($hedtBox, $write1) ;Baustein in Edit-Box anzeigen
EndIf
EndFunc ;==>show_Selection
siehe Zeile 39
mfg autoBert
Hallo autoBert,
danke für Deine Antwort.
Aber ich benutze das UDF und habe es mit #include <GuiEdit.au3> eingebunden.
Das Textfeld wird mit $Textfeld = _GUICtrlEdit_Create($Fenster,"",0,0,200,220,$ES_RIGHT+$WS_VSCROLL+$ES_MULTILINE) erzeugt.
Und der Befehl GUICtrlSetFont ($Textfeld , 14, 400 ,1) funktioniert dann nicht.
Michael
Wieso benutz du nicht einfach
[autoit]GUICtrlCreateEdit
[/autoit]?
Weil ich verschiedene Funktionen aus der UDFnutzen möchte.
z.B. die Art und Weise wie ich Text einfügen und verändern kann und vor allem, weil das Textfenster automatisch runter scrollt, wenn ich am Ende Text einfüge, usw...
Michael
Ich hab mal in die UDF geschaut und eine Möglichkeit per _SendMessage gefunden. Ich hab damit mal ein kleines Beispiel gebastelt.
#include <WindowsConstants.au3>
#include <FontConstants.au3>
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <GUIEdit.au3>
#include <WinAPI.au3>
$hFont_SegoeUI = _WinAPI_CreateFont(14, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Segoe UI')
$hFont_SegoeScript = _WinAPI_CreateFont(20, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Segoe Script')
$hWnd = GUICreate("Font Example by name22", 300, 335)
$cEdit_Text = _GUICtrlEdit_Create($hWnd, "", 5, 5, 290, 290)
_SendMessage($cEdit_Text, 0x0030, $hFont_SegoeUI, True)
$cButton_Font = GUICtrlCreateButton("Change Font", 5, 305, 290, 25)
GUISetState()
$iFont = 1
[/autoit] [autoit][/autoit] [autoit]While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_WinAPI_DeleteObject($hFont_SegoeUI)
_WinAPI_DeleteObject($hFont_SegoeScript)
_GUICtrlEdit_Destroy($cEdit_Text)
Exit
Case $cButton_Font
Switch $iFont
Case 0
_SendMessage($cEdit_Text, 0x0030, $hFont_SegoeUI, True)
Case 1
_SendMessage($cEdit_Text, 0x0030, $hFont_SegoeScript, True)
EndSwitch
$iFont = BitXOR($iFont, 1)
EndSwitch
WEnd
Super name22,
das funzt.
Ich glaube, ich muss da noch viel lernen
DANKE
Michael
Bei aller Liebe, die Funktion _GUICtrlEdit_Create() ist macht für mich in AU3-GUIs absolut keinen Sinn. Du kannst dafür immer die Funktion GUICtrlCreateEdit() nutzen, ohne irgendwelche Einschränkungen befürchten zu müssen. In fast allen Funktionen von GuiEdit.au3 findet sich die Zeile
[autoit]If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
[/autoit]
so dass sie auch mit der von GUICtrlCreateEdit() zurückgegebenen ControlID klaglos funktionieren (wenn nicht der Degubmodus eingeschaltet ist, denn dafür kommt das Statement zu spät). Und die übrigen paar Funktionen lassen sich aufrufen, indem man sich per
$idEdit = GUICtrlCreateEdit("Edit", 10, 10, 150, 150)
$hEdit = GUICtrlGetHandle(-1)
das HWND des Edits holt. Für Dein Edit kannst Du dann den vollen Funktionsumfang sowohl der eingebauten als auch der Funktionen aus GuiEdit.au3 nutzen. Ist das nicht toll?