TLABEL uzerine klaveyeden gelen verileri yazmak

Başlatan bunalmis, 04 Ocak 2010, 17:14:38

z

Tlabel nesnesini mouse ile tikladiktan sonra klavyeden basilacak karakterleri label.caption icine yazmak istiyorum.

Bu nasil yapilir?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sekoli

Selamlar,

Formun Keypreview propertysini True yapmayı unutmayın. Label'ın AutoSize özelliğini de kapatın. Yoksa boşluk tuşuna basınca bir daha Label'a tıklamak güç olabilir.
Bu kodla sadece, Label'a tıklamadan sonraki ilk tuş basımı gösterilecektir. Eğer Label'a tıkladıktan sonraki bastığım tüm tuşlar gözüksün istiyorsanız ShowKey := False; satırını kaldırın.

İyi çalışmalar.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure Label1Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
    ShowKey : Boolean;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Label1Click(Sender: TObject);
begin
  ShowKey := True;
  Label1.Caption := '';
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if ShowKey then
     Begin
       Label1.Caption := Key;
       ShowKey := False;
     End;
end;

end.

wsxwsx

bir maniniz yoksa Edit kullanın.  Editin içini tıklayınca klavyeden basılan yazılar içine yazılır. isterseniz edit'in onchange olayına ufak bir kod yazarsınız, yazılan metin aynen labelde görünür.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    procedure Edit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin
  label1.Caption := edit1.Text;
end;

end.


http://www.speedyshare.com/files/20152739/DEMO.zip

z

Tedit tıklandığında üzerinde yanıp sönen kursoru kaldırabilirmiyiz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

hasangurlek

Alıntı yapılan: "bunalmis"
Teditin çerçevesinin oluşundan dolayı hoşuma gitmiyor. Bir de son basılan tusdan dolayı uzerinde iz kalıyor.

3dyi kapatıp borderı kaldırın, isterseniz backgroundu form rengine ayarlayın istediğiniz olur.
http://www.cyber-warrior.org, Although they like whiteness, sometimes twilight is required...  Hala evlilermi bilinmez ama kesinlikle artık uygun değiller !!!

z

Evet farkettim cerceveyi kaldirabiliyormusuz.

Peki tiklandiginda cizgi seklinde olusan kursoru yokedebilirmiyiz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

wsxwsx

Aşağıdaki bileşen bu işi yapıyor olabilir.
Alıntı YapAMHFlashLabel and AMHSensitiveLabel are two visual components written in and for Borland Delphi 16bit and 32bit. The extended properties are on the one hand flashing and on the other hand being sensitive for mouse action.
amhlbl10.zip  
http://delphi.icm.edu.pl/newl/midxd40f.htm

z

Mumkunse ilave kompenent kullanmadan yapayim istiyorum.

Programin olusturdugu ekranda bazi sayisal degerleri gosteren gostergelerim var.

Bunlarin sayilari saga dayali olarak gostermesini istiyorum.

Ornegin sayisal degerin alabilecegi en buyuk deger 9999.999

alt alta duran iki gostergeden ilki

9999.999 gosterirken diger gostergeye 0.000 koydugumda

gostergerlerde ayni basamaklar alt alta gorunsuz istiyorum.

Ancak basamaklar kayik duruyor.

Karakterleri hizalamak icin soltarafa eksik karakter kadar space eklesem dahi istedigim olmuyor.

Karakterleri terminal tipi secsemde durum degismiyor.

Bunu nasil cozerim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sekoli

Selamlar,

Üstad bence bu göstergeler için TLabel kullanın. Alignment özelligini taRightJustify yapın ve ekranda alt alta getirin. Fontlarını aynı seçin, mümkünse Courier gibi eşit genişlikte font kullanın. Atama yaparkende FormatFloat fonksiyonunu kullanın sorun çözülecektir.
Kolay gelsin.

z

Evet haklisin hic olmazsa kursorle falan ugrasmam.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

Hocam  "Label4Click" yöntemi sadece label4 için olmayacak.  tuş basacak tüm labeller aynı yöntemi çağıracak.   formda 4 tane label 1 tane buton var.  butona basınca şimdiki zamanı  float sayıya çevirip , daha önce hangi etikete tıklamış isen o etikete yazar.  herhengi bir etikete tıkladığında  tuş o etikete yönlenir.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    procedure Label4Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  compindex:integer;
implementation

{$R *.dfm}

procedure TForm1.Label4Click(Sender: TObject);
begin
   compindex:=tlabel(sender).ComponentIndex;
   tlabel(sender).Caption:='';
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
  var  targetComponent:tcomponent;
begin
      TargetComponent:=components[compindex];
      Tlabel(TargetComponent).Caption := Tlabel(TargetComponent).Caption+key;
end;

procedure TForm1.Button1Click(Sender: TObject);
var  x:real;
      targetComponent:tcomponent;
begin
      x:=now;
      TargetComponent:=components[compindex];
      Tlabel(TargetComponent).Caption := Format('%f',[x]);
end;

end.