Avatar billede xing Novice
05. februar 2004 - 01:28 Der er 7 kommentarer og
1 løsning

Skrivemaskine effekt

Jeg søger en procedure som jeg kan sende noget tekst som den så skriver i en memo eller label med et bokstav af gangen...

Det ville også være cool hvis der kunne komme en firkantet curser på !
Avatar billede stone Forsker
05. februar 2004 - 02:37 #1
I delphi følger der et program med som hedder imageedit.exe her kan du lave en cursor

procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.Cursors[crArrow]:=LoadCursorFromFile('Pen_1.cur');//min egen cursor
Cursor := crArrow;

end;
Avatar billede kammeyer Nybegynder
06. februar 2004 - 17:20 #2
Lidt noget snavs (kan ikke li' Memo1.Update og Sleep), men det er en mulighed - så kan du selv forbedre den senere.

Jeg har brugt TButton, TEdit, TLabel og TMemo til eksemplet.

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  if (Length(Edit1.Text) > 0) then
    begin
      Memo1.Clear;
      for i := 1 to length(Edit1.Text) do
        begin
          Memo1.Text := Memo1.Text + Edit1.Text[i];
          Memo1.Update;
          sleep(100);
        end;
      Label1.Caption := '';
      for i := 1 to length(Edit1.Text) do
        begin
          Label1.Caption := Label1.Caption + Edit1.Text[i];
          Label1.Update;
          sleep(100);
        end;
    end;
end;
Avatar billede stone Forsker
06. februar 2004 - 18:50 #3
med sleep kan du ændre tidsintervallet sleep(100)
Avatar billede xing Novice
07. februar 2004 - 05:33 #4
Jeg brugte...

procedure Skriv(Tekst: String);
var
  i: integer;
begin
  form1.Memo1.Clear;
  for i := 1 to length(Tekst) do
  begin
    form1.Memo1.Text := form1.Memo1.Text + Tekst[i];
    form1.Memo1.Update;
    sleep(100);
  end;
end;


kammeyer ligger du lige et svar?
Avatar billede hrc Mester
07. februar 2004 - 10:55 #5
En nød som du ikke har fået løst endnu er hvordan du ændrer edit-cursoren til en firkant-cursor. I mit testprogram (for jeg gik naturligvis i gang med at skyde gråspurve med kanoner) har jeg endnu ikke fået det til at lykkes.

P.S. Jeg brugte en TTimer som jeg brugte til at tømme en TQueue for tegn. Det virker fint. Man kan få x,y positionen på der hvor caret'en er - måske skulle man bare placere en firkant ovenpå?

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  eBuffer.Text := '';
  mTypedData.Text := '';

  fQueue := TQueue.Create;
  // fMyIcon := LoadCursorFromFile('Pen_1.cur');
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
begin
  // Nothing's allocated - using a pointer to hold the ascii char
  // (which is a terrible hack..).
  fQueue.Free;
end;

procedure TfrmMain.btnTypeClick(Sender: TObject);
var
  i : integer;
  st : string;
begin
  st := eBuffer.Text;
  tTypeTimer.Enabled := false;
  try
    for i := 0 to length(st) do // Pushing the characters
      fQueue.Push(pointer(ord(st[i])));
    eBuffer.Text := '';
  finally
    tTypeTimer.Enabled := true;
  end; // try
end;

procedure TfrmMain.tTypeTimerTimer(Sender: TObject);
var
  ch : char;
begin
  if fQueue.Count = 0 then
    exit;

  if not mTypedData.Focused then
    mTypedData.SetFocus;

//  mTypedData.Lines.BeginUpdate;
  try
    ch := chr(integer(fQueue.Pop));
    mTypedData.Text := mTypedData.Text + ch;
    mTypedData.SelStart := length(mTypedData.Text);
  finally
//    mTypedData.Lines.EndUpdate;
  end; // try
end;
Avatar billede hrc Mester
07. februar 2004 - 11:47 #6
Rettelse:
  for i := 1 to length(st) do // Pushing the characters

Prøv at udkommentere linierne:
  if not mTypedData.Focused then
    mTypedData.SetFocus;

Så kan du fylde i køen samtidig med at den skriver i TMemo'en.
Avatar billede kammeyer Nybegynder
09. februar 2004 - 14:21 #7
svar
Avatar billede xing Novice
09. februar 2004 - 15:57 #8
Det er sku i orden...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester