TRichEdit und TClipboard
-
das macht sinn.
aber was genau passiert denn bei PasteFromClipboard()?
wiegesagt, beides (PasteFromClipboard() und Clipboard()->AsText) holt den gleichen text aus der windows zwischenablage. nur scheint PasteFromClipboard() einen anderen mechanismuss zu haben
wie krieg ich den mit Clipboard() den formatierten text in ein TRichEdit? Assign(Clipboard()) klappt ja nicht. Assign(Clipboard()->AsText) würde zwar gehen aber wie du schon sagtest, AsText enthält dann wohl keine formatierung mehr...
-
Gibt es auch nur einen einzigen sinnvollen Grund, es nicht über PasteFromClipboard machen zu wollen? Wie du bereits sagtest, hast du dort doch alle Formatierungen mit dabei.
-
Dasd schrieb:
Gibt es auch nur einen einzigen sinnvollen Grund, es nicht über PasteFromClipboard machen zu wollen?
Ja, wenn man keine Formatierung will

-
Windoof schrieb:
Ja, wenn man keine Formatierung will

Aua. Der hat echt gesessen.
Aber Spaß beiseite. Er _will_ die Formatierung ja haben. Nur eben über TClipboard und nicht PasteFromClipboard. Das verstehe ich nicht.
-
Ich auch nicht

-
das hat schon seine gründe

da ich z.B. über TClipboard einer listbox den text zuweise und wenn man auf ein item klickt, soll der gleiche text (aus dem item) in einem TRichEdit dargestellt werden und eben so formatiert wie der text ist. verstanden? deswegen kann ich schlecht einmal von TClipboard gebrauch machen und einmal von PasteFrom.... das würde icht gehen. jedenfalls nicht direkt und nicht sauber (habe shcon versuche hinter mir)... der einfachste weg wäre also eine einzige quelle (hier TClipbaord) zu wählen und eben....

-
Seit wann kann man einer ListBox formatierten Text zuweisen? Seit wann kann man ihr überhaupt Text zuweisen? Ich verstehe nicht, worauf du hinaus willst...
-
Achso... und die ListBox befindet sich wo?
- in einem anderen Programm,
- im gleichen Programm, aber in einem anderen Fenster oder
- der gleichen Form?
-
@Dasd: die zuweisung (zuweisungs operator
geht locker über Strings[index]... oder aber über Add()... was die formatierung angeht: von formatierter darstellung in einer listbox war ja nie die rede, nur die zuweisung..@Windoof:
- "im gleichen Programm, aber in einem anderen Fenster"worauf willst du hinaus? das ich über FormName->ListBoxName... zugreifen kann?
-
Beantworte bitte einfach nur meine Frage, dann kann ich dir vielleicht helfen. Und wie sieht die ListBox denn nun aus? -Wird beim Anklicken gleich ein Eintrag in die Zwischenablage geschoben?
Vielleicht könntest du auch, damit wir dein Problem besser nachvollziehen können, erklären, um was es sich bei deinen Programmen handelt und was genau du machen möchtest, dann müssen wir hier nämlich kein Ratespielchen spielen.
-
ich habe dir eigentlich eine antwort gegeben. zugegeben, nicht eindeutig aber hier: ""im gleichen Programm, aber in einem anderen Fenster"" das ist es. was ich vorhabe, habe ich ja bereits erwähnt. wenn anhand dieser informationen mir keinenr helfen kann/will, dann lassen wir das hald.
deine fragen sind ehrlichgesagt nicht wirklich relevant. was spielt es für eine rolle ob die listbox in einer anderen form sitzt, etc.? was ich möchte habe ich ja ausdrücklich gesagt. hier als kurz form:
TClipboard als original formatierten text in eine TListBox (als item)
that's it...

-
Borlandy schrieb:
deine fragen sind ehrlichgesagt nicht wirklich relevant.
Hmm... eigentlich...
worauf willst du hinaus? das ich über FormName->ListBoxName... zugreifen kann?
...Ja, genau... darauf wollte ich hinaus. Warum fügst du die Texte nicht einfach so ein und so...? - TClipboard ist hier doch dann nicht notwendig, stell dir mal vor du kopierst einen wichtigen Text, der lang ist und nach dem du ewig gesucht hast... und bevor du ihn in Word einfügst, willst du nur mal schnell dein kleines Tool ausführen, was auchimmer das macht... und das ersetzt dienen Text, den du so mühseelig kopiert hast, einfach so... und das ohne einen wirklichen Sinn. Wenn du mich fragst: TClipboard ist dazu da, um Daten nach außen durch den User exportieren zu lassen. Das macht z.B. sinn bei KeyGenerators... aber bei deinem Programm kann ich den Sinn nicht nachvollziehen. Das ist das Problem dabei, dir hier zu helfen. Wenn ich wenigstens den Sinn verstehen würde... aber das tut hier scheinbar niemand, deshalb habe ich ja gefragt, was dein Programm eigentlich macht. OK, ich habe michevtl. blöd ausgedrückt... ich wollte nur fragen: Wozu dient die ListBox und wozu dein RichEdit? - Was haben die miteinander zu tun? Machst du ein Wörterbuch oder wie?
-
Wozu dient die ListBox und wozu dein RichEdit?
gute frage!

antwort: die listbox ist eine art miniatur (vorschau) des textes (50 zeichen werden dargestellt..) aus der zwischenablage. wenn man auf das listbox item klickt, soll der text aus dem listbox item, vollständig und eben korrekt formatiert im richedit dargestellt werden.wieso wende ich TClipboard an?
leider verfügt TListBox nicht auch wie TRichEdit über die PasteFrom... funktion.Wieso wennde ich nicht TClipboard bei der listbox an und bei TRichEdit gleich PasteFrom?
Der grund ist, ich reagiere auf die zwischenablage. wenn ich dann (falls format CF_TEXT) reagiere und dann der listbox per TClipboard den text übergebe und dann TRichEdit über die eigene funktion PasteFrom, den text übergebe, kommt es zu einer zugriffsverletzung, da anscheinend nicht beide funktionen zur gleichen zeit, oder wie auch immer, auf die windows zwischenablage zugreiffen können.Hoffe nun ist es klar!
:p 
-
Hmm...
// Deklarationen TForm* Form1; vector<TRichEdit*>reTmp(0); // Eigene Funktionen void __fastcall TForm1::PasteFromClipboard() { // Neues RichEdit für ListBoxEintrag erstellen reTmp.resize(reTmp.size()+1); reTmp[reTmp.size()-1]=new TRichEdit; reTmp[reTmp.size()-1]->Parent=Form1; reTmp[reTmp.size()-1]->Visible=false; reTmp[reTmp.size()-1]->PasteFromClipboard(); // ListBox-Eintrag vornehmen ListBox1->Items->Add(reTmp[reTmp.size()-1]->Text.SubString(1,50)); } void __fastcall TForm1::InsertItem() { RichEdit1->SelText=reTmp[ListBox1->ItemIndex]->Text; }Und hier die Header:
class TForm1 : public TForm { //... public: void __fastcall PasteFromClipboard(); void __fastcall InsertItem(); };Hab's allerdings nicht getestet, aber so sollte zumindest auch die Formatierung übernommen werden und du musst kein TClipboard verwenden und schon garnicht den Text darin ersetzen.