İki memo var birinde ne yaparsam diğerinde de aynısı olsun

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

İki memo var birinde ne yaparsam diğerinde de aynısı olsun

Mesaj gönderen Asri »

Merhaba arkadaşlar,

bir formda iki adet memo var (memo1 ve memo2) memo1. de tuş bazında
yaptığım her hareketin aynı anda memo2 de de gerçekleşmesini istiyorum.
Örneğin;

Memo1 de enter'e bastıysam memo2 de entere basılmış olmalı.
memo1 de Delphiturkiye yazdıysam aynı anda her bir harfine basmış gibi
memo2 de bunlar oluşmalı.

bu tür bir işlemi nasıl gerçekleştirebiliriz.

memo2.lines:=memo1.lines; gibi tümünü eşitlemek yada satır bazında eşitlemek gibi çözümler istediğim şekilde bir çözüm değil. Ben karakter bazında işlem yapabilmek istiyorum.

iyi çalışmalar.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

herşey birbirinin aynı olacaksa ikinci Memo'ya ne gerek var???

OnKeyUp olayında iki memo'nun satırlarını eşitlersen olur bence. Bir denemek lazım.

Kolay gelsin.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Memonun onChange Eventinde yapıtığın her işlemi atıyabilirsin.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

@mussimsek sanırım konuyu detaylı anlatmadığım için yanlış anlaşıldım.

"herşey birbirinin aynı olacaksa ikinci Memo'ya ne gerek var???
OnKeyUp olayında iki memo'nun satırlarını eşitlersen olur bence. Bir denemek lazım. "

bu tür bir cevap geleceğini tahmin ettiğim için özellikle,

" memo2.lines:=memo1.lines; gibi tümünü eşitlemek yada satır bazında eşitlemek gibi çözümler istediğim şekilde bir çözüm değil. Ben karakter bazında işlem yapabilmek istiyorum. "

bunu belirtmiştim.

Bunu yan yana iki memo gibi düşünmeyin client server çalışan bir chat programı gibi düşünün. Ben olayı basitleştirmek için yana yana iki memo demek istemiştim.

Aynı anda aynı metin üzerinden iki kişi çalışıyor. gibi düşünelim.


@husonet , konuyu biraz daha açabilirmisiniz.

mesajlar için teşekkür ederim.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

onChange olmaz! olmaz sanırım

Chat programı gibiyse aradığın şu tip bir şeymi

Kod: Tümünü seç


procedure TForm1.Memo2KeyPress(Sender: TObject; var Key: Char);
begin
    if key = #13 then
    Begin
       Memo1.Lines.Add(Memo2.Lines.Text);
    End;

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

husonet yazdı:onChange olmaz! olmaz sanırım

Chat programı gibiyse aradığın şu tip bir şeymi

Kod: Tümünü seç


procedure TForm1.Memo2KeyPress(Sender: TObject; var Key: Char);
begin
    if key = #13 then
    Begin
       Memo1.Lines.Add(Memo2.Lines.Text);
    End;

Kolay Gelsin...
Burda enter la birlikte memo1 , memo2 ye eşitleniyor. Benim istediğim

Memo1 de bir tuşa bastığımda mesela "A" harfine memo1 de kaçıncı karaktere denk geliyorsa memo2 de de ordaki karakterin "A" olmasını istiyorum. Bu işlem aynı anda ters de olabilir yani memo2 ye girdiğimde aynı anda memo1 de de ilgili karakter değişebilmeli.

Karakter bazında çalışmam gerekiyor.

Gönderdiğiniz procedure'ü
1- ilk etapda memo1 de bir karakter girildiğinde, Bu 13. karakterdir. ve "A" girildi dedirtebilirmiyiz.

2- Bu elde ettiğimiz bilgiyi memo2 de 13. karaktere "A" olarak yazdırabilirmiyiz.


tşk.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Selamlar

Kod: Tümünü seç

procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 Memo2.Lines.Assign (Memo1.Lines)
end;
Code unda bir dene memo1 yazdığın herşey memo2 ye gidiyor. Belki işine yarar. Ama socket lerle alakalı bişeyse biraz daha farklı yapman gerekir bence.
I love my car.
Blog Yaptık
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

P206 yazdı:Selamlar

Kod: Tümünü seç

procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 Memo2.Lines.Assign (Memo1.Lines)
end;
Code unda bir dene memo1 yazdığın herşey memo2 ye gidiyor. Belki işine yarar. Ama socket lerle alakalı bişeyse biraz daha farklı yapman gerekir bence.
Anşalamadığımız bir konu var arkadaşlar.

Ben yazdığım herşeyim memo2 ye gitmesini istiyorum ama yazdığım anda sadece yazdığım şeyin gitmesini istiyorum.

Diyelimki memo2 de memo1 de olamayan bazı yazılar var
ben memo1 in tamamını memo2 ye aktarırsam bunlar kaybolur.

ama ben memo1 de sadece 37. karakterde yağtığım değişliklği memo2 nin 37. karakteri ile değiştirisem o zaman herşey istediğim gibi olur.

tşk.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

Kod: Tümünü seç

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
VAR
 Hand:HWND;
begin
  Hand :=  memo2.Handle;
  PostMessage(hand,WM_KEYDOWN,Key,0);
end;
Problemin ilk aşaması bu şekilde çözüldü.

memo2 de yapılan değişikliğin memo1 tarafından gelen bilgiden mi yoksa
memo2 den biri direkt bilgi mi girdi bunu nasıl ayırabilieriz.

Bunu yapmak istememin sebebi. Memo2 de değişiklik olduğunda aynı anda memo1 e de etki etmesini istiyorum.

Bu procedure ü memo2 ye uyarladığımda memo1 de bir değişiklik yaptığımda memo2 ye etki ediyor. aynı anda memo2 de değişiklik yapdığı düşünülerek memo1 e gönderiliyor ve süreki bir döngü oluşuyor.

teşekkür
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Şu şekilde var olanları değişiklikleri diğer memoya yolluot enter ve diğer kodları gönderilen memonun dolu olup olmadığı kontrol edilip bişeyler yapılabilir.

Kod: Tümünü seç

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
 var
i,line,column:integer;
a:string;
begin

        With Memo1 do begin
                Line := Perform(EM_LINEFROMCHAR,SelStart, 0);
                Column := SelStart - Perform(EM_LINEINDEX, Line, 0);
        end;
        Caption:=(IntToStr(line)+' '+IntToStr (column) );
        a:=Memo2.Lines[line];
        a[column+1]:=char(key);
        Memo2.Lines[line]:=a;
end;
Şu adna zamanım olmadığı için yarım kaldı. bu methotla bişeyler yapılabilir gibi geldi.,

Kolay gelsin
I love my car.
Blog Yaptık
poke53280
Üye
Mesajlar: 25
Kayıt: 23 Haz 2004 02:56
Konum: TOKAT

Sender ile dene

Mesaj gönderen poke53280 »

Kod: Tümünü seç

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
VAR
 Hand:HWND;
begin
if sender = Memo1 ////////// gibi göndereni ayırt edebilirsin.
begin
  Hand :=  memo2.Handle;
  PostMessage(hand,WM_KEYDOWN,Key,0);
end;
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Şu işinizi başlangıç olarak görebilir:

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Memo2.CaretPos := Memo1.CaretPos;
PostMessage(Memo2.Handle, WM_KEYDOWN, Key, 0);
end;
Cevapla