Demonstratie: Het manipuleren van het Klembord in Delphi
Hier is een snelle demonstratie van hoe de gemakkelijke programmering in Delphi is.
Dit kleine app staat u toe om tekst en verleden te kopiëren het opnieuw rechtsweg met het omgezet in juiste geval of hoofdletters. Dit werd geschreven voor een gebruiker ZTree die een bos van dossiers had dat hij t anders noemt aan gedeeltelijk in hoofdletters wilde. Er was geen manier om het deel van de naam uit te kiezen die hij in hoofdletters heeft gewild. Zo schreef ik deze routine om hem toe te staan om een deel van de tekst te benadrukken, exemplaar te raken en dan deeg te raken. En altviool, hij het worden bevestigd.
Zo in Delphi, hoe hebt u tot het klembord toegang? Goed, kon het niet eenvoudiger zijn. Voeg enkel de clipbrdeenheid aan uw gebruiksverklaring als toe dit:
-
gebruik Clipbrd;
Dan kunt u aan het klembord als tekst als dit lezen en schrijven:
-
A: = Clipboard.AsText;
-
Clipboard.AsText: = A + `BC';
Natuurlijk is het best om te controleren dat u tekstbefor behandelt u probeert om de informatie van het klembord terug te krijgen. Dat kan als dit worden gedaan:
-
als (Clipboard.HasFormat (CF_TEXT)) dan DoIt;
Zie! Het is ongecompliceerd DAT. Als u wilt zien wat andere klembordformaten daar zijn, enkel zal het hoogtepunt CF_TEXT in Delphi en klap F1 en u een volledige lijst krijgen.
| Waarde | Betekenis |
| CF_TEXT | Tekst met een combinatie Cr-LF aan het eind van elke lijn. Een ongeldig karakter identificeert het eind van de tekst. |
| CF_BITMAP | Grafisch bitmap van Vensters. |
| CF_METAFILEPICT | Een grafisch metadossier van Vensters. |
| CF_PICTURE | Een voorwerp van type TPicture. |
| CF_COMPONENT | Om het even welk blijvend voorwerp. |
Zo zijn de instructies om volledige app tot stand te brengen vrij eenvoudig:
In Delphi, creÃër nieuwe app. In de Inspecteur van Objecten, noem de belangrijkste vorm frmCBFix, verander de stijl van de Grens in bsToolWindow, en verander de vormstijl in fsStayOnTop
Plaats een TEdit op de vorm en noem het editCorrected tekst, ontruimend de standaardtekstwaarde.
Voeg Clipbrd aan het gebruik toe.
Zet een TTimer op de vorm en klik de tijdopnemergebeurtenis in de Inspecteur van Objecten tweemaal.
Kleef de volgende code in de eenheid die de automatische geproduceerde procedure Timer1Timer vervangt:
-
{******************************************************************************
-
 ProperCase
-
 Zet een koord in juist geval om door elke brief na een ruimte te kapitaliseren of
-
 punctuatie. De enige gemeenschappelijke gebruikte niet punctuatie is het weglatingsteken/kiest uit
-
 citaat. Dit vermijdt veranderend niet niet, maar zal geciteerde zinnen
-
 de binnen enige citaten zullen hun eerste gekapitaliseerde brief niet hebben.
-
******************************************************************************}
-
functie ProperCase (aSrcStr: Koord): Koord;
-
var
-
 Len, Index: geheel;
-
begin
-
 aSrcStr: = In kleine letters (aSrcStr);
-
 Len: = Lengte (aSrcStr);
-
 aSrcStr [1]: = In hoofdletters (koord (aSrcStr [1]))[1];
-
 voor Index: = 1 aan Len - 1
-
 beginnen
-
  als (aSrcStr [Index] in [``, $ `', `„', `(', `) ', ``', `! ', `? ', `< ', `! ', `> ', `# ', `= ', `+ ', `: ', `, ', `/', `. ', `& ', `- ', `{', `} „, „[“,“] `, `|'])
-
  dan aSrcStr [Index + 1]: = In hoofdletters (Koord (aSrcStr [Index + 1]))[1];
-
 eind;
-
 Resultaat: = aSrcStr;
-
eind;
-
Â
-
{******************************************************************************
-
 Timer1Timer
-
 De branden periodiek (oorspronkelijk elke 250ms), controleert het klembord tekst,
-
 als het is veranderd, zet het in juist geval om en zet het resultaat in
-
 het klembord en geeft controle uit.
-
******************************************************************************}
-
procedure TfrmCBFix.Timer1Timer (Afzender: TObject);
-
begin met // Timer1Timer
-
 als Clipboard.HasFormat (CF_TEXT)
-
 dan begin
-
  als (editCorrectedText.Text <> Clipboard.AsText)
-
  dan begin
-
   editCorrectedText.Text: = ProperCase (Clipboard.AsText);
-
   Clipboard.AsText: = editCorrectedText.Text;
-
  eind;
-
 eind;
-
eind;Â // Timer1Timer
En u wordt gedaan!
Hier zijn de dossiers voor dit project:
http://www.TheCodeCave.com/downloads/delphi/CBFixerUpper.exe
http://www.TheCodeCave.com/downloads/delphi/CBFixerUpper.dpr
http://www.TheCodeCave.com/downloads/delphi/u_CBFix.dfm
http://www.TheCodeCave.com/downloads/delphi/u_CBFix.pas
















[...] Zo is wat de code hierboven doet vraagt om het document in het oudervenster (waarin u met de rechtermuisknop aanklikte). Het vraagt dan om de huidige selectie (als om het even welk). Het wordt dan de huidige selectie als tekst en vraagt dan om het clibboardvoorwerp voor het huidige venster. Op dat punt is het een eenvoudige vraag aan SetData en de geselecteerde tekst wordt toegevoegd (met een paar toevoegingen) aan clippboard. Er zijn geen veel meer dan dat. Één ding dat zou moeten worden genoteerd is dat het type van gegevens in clibboard, in dit geval, als tekst moet worden gespecificeerd. U kunt meer over de andere types van gegevens lezen die een clibraad in mijn artikel over de manipulatie van het Klembord met Delphi kan behandelen HIER: [...]
Pingback door het Hol van de Code - 2 Juni, het 12:48 am van 2006 @