找回密码
 加入
搜索
查看: 13236|回复: 45

[系统综合] 有办法像EXCEL一样单元格内容与显示格式 可以不一样吗??数字的千分号

 火..   [复制链接]
发表于 2017-9-5 23:37:01 | 显示全部楼层 |阅读模式
本帖最后由 kk_lee69 于 2017-9-5 23:38 编辑

有个GUICtrlCreateInput控件 能不能使用GUICtrlRead 读取到的是1000 但是画面看到的是 1,000.00

求实现逻辑

我知道 可以先将 1000 变成 1,000.00 存到 INPUT控件,但是这样GUICtrlRead的时候 又必须要将 1,000.00 变成 1000 (因为要写入到数据库 不能有逗点)

而且 使用者修改的时候  可能会输入 有逗点或者无逗点 这些都需要在管控

一个 小型系统 可能有上百个字段需要处理

每个都这样一个一个的处理 实在是太过复杂了…..

才在想是否 有 可以 类似 EXCEL 的单元格 的方式 譬如 存在在格子中的是1000 但是 可以设定显示格式是 1,000

有这样的方法跟逻辑吗??  可以达到吗??
发表于 2017-9-6 08:38:52 | 显示全部楼层
回复 1# kk_lee69

是这个意思:



用正则替换

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-9-6 17:44:08 | 显示全部楼层
弄两个控件,一个是你正常输入的,一个仅是显示用的,当正常输入的input失去焦点,处理数据,显示在显示用控件上,同时隐藏正常输入那个。。当显示用控件获得焦点,隐藏自身,显示输入用
发表于 2017-9-6 18:47:47 | 显示全部楼层
本帖最后由 yamakawa 于 2017-9-6 18:50 编辑

回复 1# kk_lee69


    看看这个演示效果,


看得出来效果还不够完美。。。我也想不出完美的正则。忧伤!随便用的论坛里面的一个
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <GuiEdit.au3>

Global $hgui = GUICreate("Input StringFormat", 320, 220, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
;====第一个输入框,显示用,
Global $display = GUICtrlCreateInput("", 10, 5, 300, 20)
GUICtrlSetState(-1, $GUI_HIDE) ;默认不显示
Global $hdisplay = GUICtrlGetHandle(-1)
;--这个才是输入框
Global $input = GUICtrlCreateInput("12345", 10, 5, 300, 20)
Global $hinput = GUICtrlGetHandle(-1)
;===信息输出框
$out_display = GUICtrlCreateLabel("", 40, 100, 300, 50)
GUICtrlSetColor(-1, 0xff7e00)
GUICtrlCreateLabel("输入框失去焦点触发效果!", 5, 30)
Global $idBtn = GUICtrlCreateButton("点击按钮,可使输入框失去焦点,测试用!", 40, 175)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState(@SW_SHOW)

While 1
        Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                        ExitLoop
                Case $idBtn

        EndSwitch
WEnd


Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
        $hWndFrom = $lParam
        $iIDFrom = BitAND($wParam, 0xFFFF)
        $iCode = BitShift($wParam, 16)
        
        If $iIDFrom = $display And $iCode = $EN_SETFOCUS Then
                GUICtrlSetState($display, 32)
                GUICtrlSetState($input, 272)
        EndIf
        Switch $iCode
                Case $EN_CHANGE
                Case $EN_KILLFOCUS
                        Local $tempArray = StringRegExp(GUICtrlRead($input), "[^\d,\.]", 3)
                        If @error Or Not IsArray($tempArray) Then
                                
                                Local $displaydata = GUICtrlRead($input)
                                $displaydata = StringRegExpReplace(StringRegExpReplace($displaydata, "(?<=\d)(?=(?:\d{3})+(?=\D|\Z))|((?:\.\d+)+)", ",$1"), ",(?=\.\d)", "")
                                GUICtrlSetData($display, $displaydata)
                                GUICtrlSetState($display, 16)
                                GUICtrlSetState($input, 32)
                                GUICtrlSetData($out_display, "你实际输入的数据 :" & GUICtrlRead($input) & @CRLF & _
                                                "你看到的数据 :" & GUICtrlRead($display))
                        Else
                                GUICtrlSetData($out_display, "仅允许输入数字,逗号以及点!")
                                GUICtrlSetData($display, "")

                        EndIf
                Case $EN_SETFOCUS
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-9-6 19:21:36 | 显示全部楼层
本帖最后由 yamakawa 于 2017-9-6 19:38 编辑

简单修改一下。。。。。
应该勉强能将就吧。。。

注意。。有个要注意,这样,你以后读取的时候,不能用GUICtrlRead($input)了,而是从数组读取 $data[$input][1]

还是很蛋疼,,如果终端客户是个白痴乱输入的话,还是会很奇怪
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#cs
        autoit.com yamakawa
        测试环境 win10 x64
        autoit3 3.3.14.2
#ce
;版本判断
Local $verArray = StringSplit(@AutoItVersion, ".")
If $verArray[3] < 14 Then MsgBox(4096, "来自Autoit.com -Yamakawa的提示", "本段代码测试于 Autoit 3.3.14.2!" & @CRLF & @CRLF & @CRLF & "当前版本低于3.3.14.2 如果出现问题,请自行修改!")
;低于3.3.14.2则弹出提示。不兼容可能是版本问题

;常量定义
Global Const $EN_CHANGE = 0x300
Global Const $EN_KILLFOCUS = 0x200
Global Const $EN_SETFOCUS = 0x100

Global $data[10000][2];定义一个数组
$data[0][0] = "第一列存放输入数据"
$data[0][1] = "第二列存放处理过数据"

Global $hgui = GUICreate("Input StringFormat", 320, 220, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
;===第一个输入框
Global $input = GUICtrlCreateInput("12345", 10, 5, 300, 20)
;~ Global $hinput = GUICtrlGetHandle(-1)
;===第二个输入框
Global $input1 = GUICtrlCreateInput("54321", 10, 35, 300, 20)
;~ Global $hinput1 = GUICtrlGetHandle(-1)

;===信息输出框
$out_display = GUICtrlCreateLabel("", 40, 100, 300, 50)
GUICtrlSetColor(-1, 0xff7e00)
GUICtrlCreateLabel("输入框失去焦点触发效果!", 5, 80)
Global $idBtn = GUICtrlCreateButton("点击按钮,可使输入框失去焦点,测试用!", 40, 175)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState(@SW_SHOW)

While 1
        Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                        ExitLoop
        EndSwitch
WEnd


Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
        $hWndFrom = $lParam
        $iIDFrom = BitAND($wParam, 0xFFFF)
        $iCode = BitShift($wParam, 16)
Switch $iIDFrom
        Case $input,$input1
        Switch $iCode
                Case $EN_CHANGE
                Case $EN_KILLFOCUS
                        Local $tempArray = StringRegExp(GUICtrlRead($iIDFrom), "[^\d,\.-]", 3)
                        If @error Or Not IsArray($tempArray) Then
                                
                                $data[$iIDFrom][0] = StringReplace(GUICtrlRead($iIDFrom),",","")
                                $data[$iIDFrom][1] = StringRegExpReplace(StringRegExpReplace($data[$iIDFrom][0], "(?<=\d)(?=(?:\d{3})+(?=\D|\Z))|((?:\.\d+)+)", ",$1"), ",(?=\.\d)", "")
                                                                
                                GUICtrlSetData($iIDFrom, $data[$iIDFrom][1])
                                GUICtrlSetData($out_display, "你实际输入的数据 :" & $data[$iIDFrom][0] & @CRLF & _
                                                "你看到的数据 :" & $data[$iIDFrom][1])
                        Else
                                GUICtrlSetData($out_display, "仅允许输入数字,逗号以及点!")
                        EndIf
                Case $EN_SETFOCUS
                        If $data[$iIDFrom][1]  Then GUICtrlSetData($iIDFrom,$data[$iIDFrom][0])
        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-9-7 20:10:34 | 显示全部楼层
回复 5# yamakawa

研究看看

這倒也是個方法
发表于 2017-9-7 21:15:09 | 显示全部楼层
刚刚到家。。。
或者你在                Case $EN_CHANGE 那里检查,如果客人输入不符合要求的字符,数字 ,英文逗号,点,就提示并删除不符合的字符,然后写一个_guictrlread()函数 一个_guictrlsetdata()函数
前一个函数读取的时候replace掉逗号,后一个函数用论坛的正则,自动千分位加逗号
发表于 2017-9-8 08:52:46 | 显示全部楼层
回复 6# kk_lee69
二楼的回复不是你要的,答非所问?
你不理解?
数据库读取/写入我是这样操作的,
Func Qwdh($Str);千位豆号
        If $Str == "" Then Return SetError(0, 1, "")
        Return SetError(0, 1, StringRegExpReplace(StringRegExpReplace($Str, "(?<=\d)(?=(?:\d{3})+(?=\D|\Z))|((?:\.\d+)+)", ",$1"), ",(?=\.\d)", ""))
EndFunc   ;==>Testa
Func XQwdh($Str);消除千位豆号
        If $Str == "" Then Return SetError(0, 1, "")
        Return SetError(0, 1, StringRegExpReplace(StringRegExpReplace($Str, '\,', ''), ",(?=\,\d)", ""))
EndFunc   ;==>FTesta
;数据库的读取与写入-----------------------------------------------------

Func du();读取
        ;GUICtrlSendMsg($listview1, $LVM_DELETEALLITEMS, 0, 0)
        $addfld = ObjCreate("ADODB.Connection")
        $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
        $RS = ObjCreate("ADODB.Recordset")
        $RS.ActiveConnection = $addfld
        $RS.Open("Select " & $T & " From " & $tblname)
        Local $total 
        While Not $RS.eof And Not $RS.bof
                If @error = 1 Then ExitLoop
                $total = $RS.Fields(6).value
                GUICtrlSetData($Input1, Qwdh($total));读取数据库显示输入框千位豆号
                $RS.movenext
        WEnd
        $RS.close
        $addfld.Close
EndFunc   ;==>du
Func xie();写入数据库
        If GUICtrlRead($Input1) <> '' And GUICtrlRead($Input7) <> '' Then
                $read1 = XQwdh(GUICtrlRead($Input1));消除千位豆号写入数据库
                $read2 = GUICtrlRead($Input2)
                $read3 = GUICtrlRead($Input3)
                $read4 = GUICtrlRead($Input4)
                $read5 = GUICtrlRead($Input5)
                ;$read6=GUICtrlRead($Input6)
                $read7 = GUICtrlRead($Input7)
                $addfld = ObjCreate("ADODB.Connection")
                $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
                $addfld.execute("insert into " & $tblname & " (riqi,leibie,zaiyao,shouru,fucu,heji) values('" & $read1 & "','" & $read2 & "','" & $read3 & "','" & $read4 & "','" & $read5 & "','" & $read4 - $read5 & ".00" & "')")
                $addfld.close
                du()
        Else
                MsgBox(48, '错误', '请检查输入是否完整')
        EndIf
EndFunc   ;==>xie
 楼主| 发表于 2017-9-8 09:08:30 | 显示全部楼层
回复 8# chzj589

我理解 我也是這樣做的

但是  你知道 你每個格子  都要這樣處理 總共三個地方

1. 使用者輸入 1000  你要替換成1,000
2. 讀取資料 你要把1,000  換成 1000
3. 從資料庫讀取 1000 你又要換成 1,000  放在格子裡

所以每個格子 都要處理3次

ERP 系統下來 可能上百的格子都要這樣處理
覺得煩

所以才上來找 類似 EXCEL的處理方式 類似風格的概念  

看看能不能讀取 存放 都不用處理  只要設定好風格  其他都自己跑了....
发表于 2017-9-8 09:26:39 | 显示全部楼层
回复 9# kk_lee69
1. 使用者輸入 1000  你要替換成1,000
是的,那你要写入数据库吧?在写入数据库时处理:
$read1 = XQwdh(GUICtrlRead($Input1));消除千位豆号写入数据库
2. 讀取資料 你要把1,000  換成 1000

3. 從資料庫讀取 1000 你又要換成 1,000  放在格子裡
读取数据库时:
GUICtrlSetData($Input1, Qwdh($RS.Fields(6).value);读取数据库显示输入框千位豆号
 楼主| 发表于 2017-9-8 09:31:05 | 显示全部楼层
回复 10# chzj589

我知道

只是覺得 以前只要 GUICtrlRead($Input1)

這樣不是挺單純的.....

現在就得改來改去的 況且 如果要改以前寫的就有點累
发表于 2017-9-8 09:43:32 | 显示全部楼层
回复 11# kk_lee69
AU3Check (3.3.6.0)旧版本与AU3Check (3.3.14.2)新版本的使用,
你不是也要修改函数。

EXCEL也是一个程序,要像它那样的功能,可能有点难。
 楼主| 发表于 2017-9-8 09:48:16 | 显示全部楼层
回复 12# chzj589

我本來想....

拿 LISTVIEW 來說  我們不是已經可以自繪了嗎  事實上 我們已經可以讀取TXT 資料 秀成其他顏色

如果在這時候 我們做了手腳 加上了 , 那麼不就變成了 顯示 是,  而實際內容沒有嗎???
发表于 2017-9-8 09:54:14 | 显示全部楼层
回复 13# kk_lee69
不理解你的意思。 
 楼主| 发表于 2017-9-8 09:57:43 | 显示全部楼层
回复 14# chzj589
你看下面的例子吧

意義是一樣的 想法是一樣的

只是 這個是 在LISTVIEW 中的

你點擊 其中任何一個 就可以看到變化


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiEdit.au3>
#include <FontConstants.au3>
#include <WinAPI.au3>
#include <ColorConstants.au3>
#include <GDIPlus.au3>
#include <GuiRichEdit.au3>
#include <ButtonConstants.au3>
Global $hEdit, $hDC, $hBrush, $Item = -1, $SubItem = 0, $Index


Global $stRect = DllStructCreate("int;int;int;int")

Global $Start = True

Global $Clear = False

Global $tRect

Global $RichEdit

$Font = _WinAPI_CreateFont(15, 5, 0, 0, 400, False, False, False, Default, Default, Default, Default, 0, 'Arial')

$hGUI = GUICreate("ListView Subitems edit in place", 300, 210)

$hListView = _GUICtrlListView_Create($hGUI, "Items|SubItems", 2, 2, 296, 210)
_WinAPI_SetFont($hListView, $Font, True)
_GUICtrlListView_SetExtendedListViewStyle($hListView, $LVS_EX_GRIDLINES + $LVS_EX_FULLROWSELECT)
;~ ControlDisable($hGUI, "", HWnd(_GUICtrlListView_GetHeader($hListView)))
_GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
_GUICtrlListView_SetColumnWidth($hListView, 2, $LVSCW_AUTOSIZE_USEHEADER)
For $i = 1 To 10
    _GUICtrlListView_AddItem($hListView, "1000 " )
    _GUICtrlListView_AddSubItem($hListView, $i - 1, "1000000 " , 1)
Next
$hButton = GUICtrlCreateButton("", 0, 0, 0, 0, BitOR($GUI_SS_DEFAULT_BUTTON, $BS_DEFPUSHBUTTON))
GUICtrlSetState($hButton, $GUI_HIDE)



GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

GUISetState()






While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $hButton
            Update_Text()
    EndSwitch
WEnd


Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $tNMHDR, $hWndFrom, $iCode
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $iCode = DllStructGetData($tNMHDR, 3)
    Switch $hWndFrom
        Case $hListView
            Switch $iCode
                Case $NM_CUSTOMDRAW
                    ; If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG
                    Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $ilParam), $iDrawStage, $iItem, $iSubitem, $hDC, $tRect, $iColor1, $iColor2, $iColor3
                    $iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage')
                    Switch $iDrawStage
                        Case $CDDS_PREPAINT
                            Return $CDRF_NOTIFYITEMDRAW
                        Case $CDDS_ITEMPREPAINT
                            Return $CDRF_NOTIFYSUBITEMDRAW
                        Case $CDDS_ITEMPOSTPAINT
                        Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
                            $iItem = DllStructGetData($tCustDraw, 'dwItemSpec')
                            $iSubitem = DllStructGetData($tCustDraw, 'iSubItem')
                            If _GUICtrlListView_GetItemSelected($hWndFrom, $iItem) Then
                                $hDC = _WinAPI_GetDC($hWndFrom)
                                $tRect = DllStructCreate($tagRECT)
                                If $iSubitem = 0 Then
                                    _SendMessage($hWndFrom, $LVM_GETSUBITEMRECT, $iItem, DllStructGetPtr($tRect))
                                    DllStructSetData($tRect, 1, 2)
                                    ; DllStructSetData($tRect, 1, DllStructGetData($tRect, 1) - 2)
                                    _WinAPI_FillRect($hDC, DllStructGetPtr($tRect), _WinAPI_CreateSolidBrush(0xFF9933));0XEAEAEA 灰色 0xFF9933 藍色
                                                                        ;DllStructSetData($tCustDraw, "clrText", 0xFFFFFF) ;高亮後文字改為白色
                                EndIf
                                DllStructSetData($tRect, 1, 2)
                                DllStructSetData($tRect, 2, $iSubitem)
                                _SendMessage($hWndFrom, $LVM_GETSUBITEMRECT, $iItem, DllStructGetPtr($tRect))
                                Local $sText = _GUICtrlListView_GetItemText($hWndFrom, $iItem, $iSubitem)
                                _WinAPI_SelectObject($hDC, $Font)
                                _WinAPI_SetBkMode($hDC, $TRANSPARENT)
                                $GetColumnWidth = _GUICtrlListView_GetColumnWidth($hWndFrom, 0) / 2
                                $GetStringWidth = _GUICtrlListView_GetStringWidth($hWndFrom, $sText)
;~                                 DllStructSetData($tRect, 1, DllStructGetData($tRect, 1)+ $GetColumnWidth -($GetStringWidth/2)-2)
                                DllStructSetData($tRect, 2, DllStructGetData($tRect, 2) + 2)
                                                                ;_WinAPI_SetTextColor($hDC, 0xFFFFFF)                        ;選中後改為白色字體
                                _WinAPI_DrawText($hDC, StringRegExpReplace($sText, "(?<=(?<!\.)\d)(?=(?:\d{3})+(?:\D|\Z))", ",")    , $tRect, $DT_CENTER)
                                _WinAPI_ReleaseDC($hWndFrom, $hDC)
                                                                
                                Return $CDRF_SKIPDEFAULT
                            EndIf
                            Return $CDRF_NEWFONT
                        Case BitOR($CDDS_ITEMPOSTPAINT, $CDDS_SUBITEM)
                        Case Else
                    EndSwitch
                Case $LVN_COLUMNCLICK
                    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
                    $iCol = DllStructGetData($tInfo, "SubItem")
                    $bSortSense = False
                    _GUICtrlListView_SimpleSort($hListView, $bSortSense, $iCol, False)


;~              Case $NM_CLICK
;~                  If $Clear=True Then
;~                      DllStructSetData($tRect, 1, DllStructGetData($tRect, 1) - 5)
;~                      DllStructSetData($tRect, 4, DllStructGetData($tRect, 4) - 1)
;~                      _WinAPI_FillRect($hDC, DllStructGetPtr($tRect), _WinAPI_CreateSolidBrush(0xFFFFFF))
;~                      DllStructSetData($tRect, 1, DllStructGetData($tRect, 1) + 5)
;~                      DllStructSetData($tRect, 4, DllStructGetData($tRect, 4) + 1)
;~                      _WinAPI_DrawText($hDC, $bText, $tRect,BitOR($DT_VCENTER, $DT_END_ELLIPSIS, $DT_SINGLELINE))
;~                  EndIf
;~                  $Info   = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
;~                  $Index  = DllStructGetData($Info, "Index")
;~                  $SubItem= DllStructGetData($Info, "SubItem")
;~                  $Sub_Rect=_GUICtrlListView_GetSubItemRect($hListView,$Index,$SubItem)
;~                  $hDC = _WinAPI_GetDC($hWndFrom)
;~                  $tRect = DllStructCreate($tagRECT)
;~                  DllStructSetData($tRect, 1, 2)
;~                  DllStructSetData($tRect, 2, $SubItem)
;~                  _SendMessage($hWndFrom, $LVM_GETSUBITEMRECT, $Index, DllStructGetPtr($tRect))
;~                  If $SubItem < 1 Then
;~                      DllStructSetData($tRect, 1, DllStructGetData($tRect, 1) - 3)
;~                      DllStructSetData($tRect, 4, DllStructGetData($tRect, 4) - 2)
;~                      DllStructSetData($tRect, 3, DllStructGetData($tRect, 3) - 1)
;~                      DllStructSetData($tRect, 2, DllStructGetData($tRect, 2) + 1)
;~                  ElseIf $SubItem > 0 Then
;~                      DllStructSetData($tRect, 1, DllStructGetData($tRect, 1) + 2)
;~                      DllStructSetData($tRect, 4, DllStructGetData($tRect, 4) - 2)
;~                      DllStructSetData($tRect, 3, DllStructGetData($tRect, 3) - 1)
;~                      DllStructSetData($tRect, 2, DllStructGetData($tRect, 2) + 1)
;~                  EndIf
;~                  _WinAPI_FillRect($hDC, DllStructGetPtr($tRect), _WinAPI_CreateSolidBrush(0xD0D0D0))
;~                  If $SubItem < 1 Then
;~                      DllStructSetData($tRect, 1, DllStructGetData($tRect, 1) + 5)
;~                      DllStructSetData($tRect, 4, DllStructGetData($tRect, 4) + 1)
;~                  ElseIf $SubItem > 0 Then
;~                      DllStructSetData($tRect, 1, DllStructGetData($tRect, 1) + 4)
;~                      DllStructSetData($tRect, 4, DllStructGetData($tRect, 4) + 1)
;~                  EndIf
;~                  Global $sText = _GUICtrlListView_GetItemText($hWndFrom, $Index, $SubItem)
;~                  _WinAPI_SetBkMode($hDC, $TRANSPARENT)
;~                  _WinAPI_SelectObject($hDC, _SendMessage($hWndFrom, $WM_GETFONT))
;~                  _WinAPI_DrawText($hDC, $sText, $tRect,BitOR($DT_VCENTER, $DT_END_ELLIPSIS, $DT_SINGLELINE))
;~                  Global $bText=$sText
;~                  $Clear=True
            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY


Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    $iCode = BitShift($wParam, 16)
    Switch $lParam
        Case $RichEdit
            Switch $iCode
                Case $EN_KILLFOCUS
                    Update_Text()
            EndSwitch
    EndSwitch
EndFunc   ;==>WM_COMMAND



Func Update_Text()
    $RichEdit_Text = _GUICtrlEdit_GetText($RichEdit)
    _GUICtrlListView_SetItemText($hListView, $Index, StringStripWS($RichEdit_Text, 3), $SubItem)
    _WinAPI_ReleaseDC($RichEdit, $hDC)
    _WinAPI_DestroyWindow($RichEdit)
EndFunc   ;==>Update_Text
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-18 14:15 , Processed in 0.086312 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表