|
Corel FORUM
Forum użytkowników programów firmy Corel. Grafika wektorowa, rastrowa i obróbka zdjęć cyfrowych
|
Wstaw (ze schowka) jako tekst niesformatowany |
Autor |
Wiadomość |
Artur Miernik
Pomógł: 49 razy Wiek: 52 Dołączył: 18 Lip 2010 Posty: 1608 Skąd: Starachowice
|
Wysłany: 8 Kwiecień 2015, 17:46 Wstaw (ze schowka) jako tekst niesformatowany
|
|
|
Patrząc na ten wątek, pomyślałem sobie, że być może warto naprawić to co od dawna nie działa w Corelu tak, jak trzeba, czyli wstaw specjalnie jako tekst (niesformatowany). Chodzi o to, żeby wstawiona fraza nie lądowała na środku strony, w ramce tekstu o szerokości tejże strony, lecz wklejała się tam, gdzie ustawiliśmy kursor narzędzia tekst. I lepiej niech nic nie robi się, jeśli kursor tekstowy nie jest ustawiony.
Poniższy kod działa i pochodzi z makra nagranego podczas wywołania edycja/ wklej specjalnie… jako tekst:
Kod: | Sub wklej_niesformatowane()
' Description:
' Wstawia tekst ze schowka jako niesformatowany
ActiveLayer.PasteSpecial "Text"
Dim Paste1 As ShapeRange
Set Paste1 = ActiveSelectionRange
End Sub |
Kłopot w tym, że nie wiem co powinienem wpisać w miejsce As ShapeRange.
Radźcie Panowie. |
|
|
|
|
Shame
Red Dot Corporation
Wersja CorelDRAW: X7
Pomógł: 213 razy Wiek: 40 Dołączył: 19 Kwi 2012 Posty: 2565 Skąd: Poznań
|
Wysłany: 8 Kwiecień 2015, 20:08
|
|
|
String? |
|
|
|
|
chezare
Pomógł: 402 razy Dołączył: 24 Gru 2010 Posty: 4551 Skąd: Grodzisk Mazowiecki
|
Wysłany: 11 Kwiecień 2015, 14:09
|
|
|
Ja bym na Twoim miejscu nic nie wpisywał.
" …gdzie ustawiliśmy kursor narzędzia tekst. I lepiej niech nic nie robi się, jeśli kursor tekstowy nie jest ustawiony."
Artur, musisz się zdecydować jaki ma być kursor.
Ja się w tym wszystkim zupełnie nie orientuję, ale widziałbym to tak. Najpierw trzeba ustalić pozycję kursora. Przyjmijmy że mamy kurX i kurY, które określają położenie kursora. Jak mamy te dane, to trzeba skonstruować coś takiego:
…
Dim Paste1 As ShapeRange
Set Paste1 = ActiveSelectionRange
Paste1.PositionX = kurX
Paste1.PositionY = kurY
…
Pozycja została zmieniona, ale pojawia się kolejny problem, jak zmienić rozmiar ramki
tekstowej tak żeby pasowała do tekstu?
Poza tym w taki sposób wstawia się tekst jak najbardziej sformatowany, choć nie tak jak w dokumencie z którego zostaje kopiowany, ta ramka ma przypisany font, jego rozmiar itd.
Przeczytałem to co napisałem i widzę, że to bez sensu jest. Jak ustalić pozycję gdzie ta ramka ma zostać wstawiona? Trzeba kliknąć w to miejsce, ustawić kursor w tym miejscu i co teraz? Jak uruchomić to makro, z klawiatury? To powinno działać tak jak wstawianie grafiki, wybierasz plik i klikasz gdzie ma zostać wstawiona jego zawartość. |
|
|
|
|
Artur Miernik
Pomógł: 49 razy Wiek: 52 Dołączył: 18 Lip 2010 Posty: 1608 Skąd: Starachowice
|
Wysłany: 11 Kwiecień 2015, 15:44
|
|
|
Do makra, o ile będzie działało, podwiąże się skrót, np.: [ctrl]+[shift]+[v] i po kłopocie. |
|
|
|
|
maroQ
Doradca
Pomógł: 16 razy Wiek: 40 Dołączył: 08 Lut 2011 Posty: 117 Skąd: Kalisz
|
Wysłany: 14 Kwiecień 2015, 14:22
|
|
|
Popracujcie sobie nad tym kodem:
Kod: | Sub PasteText()
Dim txt As String
txt = ClipboardGetText()
If txt <> "" Then
Dim x As Double, y As Double
If ActiveDocument.GetUserClick(x, y, 1, 10, False, cdrCursorExtPick) = 0 Then
ActiveLayer.CreateParagraphText x, y, x + 2, y - 2, txt
End If
Else
MsgBox "Schowek nie zawiera tekstu", vbInformation, "-/\-"
End If
End Sub
Function ClipboardGetText() As String
Dim dob As DataObject
Set dob = New DataObject
dob.GetFromClipboard
ClipboardGetText = dob.GetText
End Function |
To jest samo wstawianie ze schowka w oparciu o kliknięcie użytkownika. Wymiary pola tekstowego można sobie ustawić wedle uznania. |
|
|
|
|
chezare
Pomógł: 402 razy Dołączył: 24 Gru 2010 Posty: 4551 Skąd: Grodzisk Mazowiecki
|
Wysłany: 15 Kwiecień 2015, 20:39
|
|
|
Artur, Szaman naprawił wstawianie tekstu. Teraz tylko sobie dorobisz skrót i gitara.
U mnie działanie procedury skończyło się na deklaracji
za co odpowiedzialna jest windowsowa biblioteka:
Po podłączeniu działa.
Jeśli jednak spróbujecie wkleić ze schowka grafikę, to skończy się taki pomysł na:
i nie zobaczycie tekstu o tym, że w schowku tekstu nie ma.
Oczywiście to drobny mankament, który można naprawić, np.:
Kod: | Function ClipboardGetText() As String
Dim dob As DataObject
On Error Resume Next
Set dob = New DataObject
dob.GetFromClipboard
ClipboardGetText = dob.GetText
End Function |
Na początku wydawało mi się, że to nie ma sensu, ale jestem coraz bliżej tego, żeby się do nowej funkcji przyzwyczaić. Szaman zasłużył na pochwałę. |
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
|
|
|
|
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
| Strona wygenerowana w 0.12 sekundy. Zapytań do SQL: 13 |
|
|