Что нового

Как скопированный в буфер обмена текст построчно в ListView загрузить

StarEdik

Новичок
Сообщения
365
Репутация
4
Версия AutoIt: 3.3.6.1

Описание:
Привет всем. :smile:Прошу помочь мне. :-[ Идея такая.
Текст выделяется и копируется в буфер обмена из текстового редактора (блокнот, ворд,…).
Этот скопированный текст вставляется в Edit и через него загружается в ListView.
Как этот текст загрузить построчно в ListView и сохранить под каким та именем . :scratch:
Приблизительная форма
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 249, 345, 192, 114)
$ListView1 = GUICtrlCreateListView("", 10, 72, 225, 209)
$Button1 = GUICtrlCreateButton("Clear", 87, 296, 69, 25)
$Button2 = GUICtrlCreateButton("Save", 11, 295, 69, 25)
$Edit1 = GUICtrlCreateEdit("", 10, 8, 225, 57, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetData(-1, "")
$Button3 = GUICtrlCreateButton("Exit", 164, 296, 69, 25)
GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
Примечания:
В тексте строки не большие , но их может быть много
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>
#include <GuiListView.au3>

$hForm = GUICreate("Example", 300, 200)
$ListView = GUICtrlCreateListView("Example", 0, 25, 300, 160)
GUICtrlCreateListViewItem("Text 1", $ListView)
GUICtrlCreateListViewItem("Text 2", $ListView)
GUICtrlCreateListViewItem("Text 3", $ListView)
_GUICtrlListView_SetColumnWidth($ListView, 0, 270)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()

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

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
	$iStruct = DllStructCreate($tagNMTVDISPINFO, $lParam)
	$iCode = DllStructGetData($iStruct, "Code")
	$Index = _GUICtrlListView_GetSelectedIndices($ListView)
	If $iCode = $NM_CLICK And StringLen($Index) <> 0 Then
		
		MsgBox(0,"Text",_GUICtrlListView_GetItemText($ListView, Number($Index))) ; Пример
		
		SetBuffer(_GUICtrlListView_GetItemText($ListView, Number($Index))) ; Копировать в буфер обмена
		
		Return
	EndIf
EndFunc 

Func SetBuffer($sText)
	ClipPut($sText)
EndFunc
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
StarEdik

Так сойдёт?

Код:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
; #include <Array.au3>


$Form1 = GUICreate("Form1", 249, 345, 192, 114)
$ListView1 = GUICtrlCreateListView("Список", 10, 72, 225, 209)
$hListView0 = GUICtrlGetHandle($ListView1)
_GUICtrlListView_SetColumnWidth($hListView0, "", 225)
$Button1 = GUICtrlCreateButton("Получить", 87, 296, 69, 25)
GUICtrlSetTip(-1, "получить из буфера в ListView1")
$Button2 = GUICtrlCreateButton("Save", 11, 295, 69, 25)
$Button3 = GUICtrlCreateButton("Exit", 164, 296, 69, 25)
GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $ClipGet = ClipGet()
			_GUICtrlListView_DeleteAllItems($hListView0)
			$aClipGet = StringSplit(StringStripCR($ClipGet), @LF)
			; _ArrayDisplay($aClipGet, 'Array')
			For $i = 1 to $aClipGet[0]
				GUICtrlCreateListViewItem($aClipGet[$i], $ListView1)
			Next
        Case $Button2
			$file = FileOpen(@ScriptDir&'\file.txt',2)
			FileWrite($file, $ClipGet)
			FileClose($file)
    EndSwitch
WEnd
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
Viktor1703
Спасибо за отклик. :smile: Не то что надо, но это хороший пример для дальнейшего использования .Он мне как раз пригодиться.. :scratch:

AZJIO
Привет и спасибо за оказанную помощь. :smile:


Сойдёт и еще как. :smile: AZJIO , вы поняли меня дословно. Скрипт получился как я и задумал. Надо б сохранить скопированную под разными именами в формате «hh.mm dd.MM.yy » (02.48 21.10.11) и с выбором места (Save As) :scratch: :-[
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
StarEdik

Код:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
; #include <Array.au3>


$Form1 = GUICreate("Form1", 249, 345, 192, 114)
$ListView1 = GUICtrlCreateListView("Список", 10, 72, 225, 209)
$hListView0 = GUICtrlGetHandle($ListView1)
_GUICtrlListView_SetColumnWidth($hListView0, "", 225)
$Button1 = GUICtrlCreateButton("Получить", 87, 296, 69, 25)
GUICtrlSetTip(-1, "получить из буфера в ListView1")
$Button2 = GUICtrlCreateButton("Save", 11, 295, 69, 25)
$Button3 = GUICtrlCreateButton("Exit", 164, 296, 69, 25)
GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $ClipGet = ClipGet()
            _GUICtrlListView_DeleteAllItems($hListView0)
            $aClipGet = StringSplit(StringStripCR($ClipGet), @LF)
            ; _ArrayDisplay($aClipGet, 'Array')
            For $i = 1 to $aClipGet[0]
                GUICtrlCreateListViewItem($aClipGet[$i], $ListView1)
            Next
        Case $Button2
			$SaveFile = FileSaveDialog('Сохранить как ...', @DesktopDir , 'Текстовый файл (*.txt)', 24, @HOUR&'.'&@MIN&' '&@MDAY&'.'&@MON&'.'&@YEAR, $Form1)
			If @error Then ContinueLoop
			If StringRight($SaveFile, 4) <> '.txt' Then $SaveFile&='.txt'
            $file = FileOpen($SaveFile,2)
            FileWrite($file, $ClipGet)
            FileClose($file)
    EndSwitch
WEnd
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
AZJIO
Спасибо :smile: . Выручил. Отличное решение . :ok: Благодарю за помощь.+1
 
Верх