Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Modullere göre Lisanslama
#41
İlk gönderdiğim kodu unuttunuz sanırım. 

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var
 i : Integer;
 LSecili : String;
begin
 LSecili := '';
 for i := 0 to TCheckListBox(Sender).Count-1 do
   if TCheckListBox(Sender).Checked[i] then begin
     if LSecili = '' then LSecili := TCheckListBox(Sender).Items[i]
                     else LSecili := LSecili + ', ' + TCheckListBox(Sender).Items[i]
   end;
 Edit1.Text := LSecili;
 Edit2.Text := System.Hash.THashMD5.GetHashString( LSecili );
end;


Burada Edi1.Text yerine Memo1.Lines.Text dediğinizi düşünün bakalım neler oluyor.

Alt alta yazsın dersez slinebreak kelimesini hatırlayın veya Memo1.Lines.Text yerine Memo1.Lines.Add farkını hatırlayın.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#42
(17-10-2021, Saat: 10:44)mrmarman Adlı Kullanıcıdan Alıntı: İlk gönderdiğim kodu unuttunuz sanırım. 

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var
 i : Integer;
 LSecili : String;
begin
 LSecili := '';
 for i := 0 to TCheckListBox(Sender).Count-1 do
   if TCheckListBox(Sender).Checked[i] then begin
     if LSecili = '' then LSecili := TCheckListBox(Sender).Items[i]
                     else LSecili := LSecili + ', ' + TCheckListBox(Sender).Items[i]
   end;
 Edit1.Text := LSecili;
 Edit2.Text := System.Hash.THashMD5.GetHashString( LSecili );
end;


Burada Edi1.Text yerine Memo1.Lines.Text dediğinizi düşünün bakalım neler oluyor.

Alt alta yazsın dersez slinebreak kelimesini hatırlayın veya Memo1.Lines.Text yerine Memo1.Lines.Add farkını hatırlayın.

Bu şekilde değiştirdim. Fakat şöyle yazıyor "İcmal Raporu, Modül 1" Modül 2 seçtiğim de "Ayrıntılı K.D.V İcmal Raporu, Modül 1,Modül 2" 
Modül 3 seçtiğim dede "K.D.V İcmal Raporu, Modül 1, Modül 2, Modül 3" şeklinde gidiyor.

Şunu yapamadım;

"Modül 1" seçtiğim de Memo1 de "İcmal Raporu",  "Modül 1" ve  "Modül 2" seçtiğim de "İcmal Raporu", "Ayrıntılı K.D.V İcmal Raporu"   



procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
Var
t:Integer;
LSec : String;
begin
t:=CheckListBox1.ItemIndex;
LSec := '';
   if CheckListBox1.Checked[t] then
   Case t of
    0:LSec:='İcmal Raporu';
    1:LSec:='Ayrıntılı K.D.V İcmal Raporu';
    2:LSec:='K.D.V İcmal Raporu';
End;

for t := 0 to TCheckListBox(Sender).Count-1 do
  if TCheckListBox(Sender).Checked[t] then
   begin
    if LSec = '' then LSec := TCheckListBox(Sender).Items[t]
                    else LSec := LSec + ', ' + TCheckListBox(Sender).Items[t]
End;
Memo1.Lines.Text := LSec;
end;
Cevapla
#43
LSec başlangıçta (döngünün dışında) boş değil mi?

Döngü içerisinde Case bloğuna bakalım,  her seçili modül için bir True oluşuyor. Görebildiniz mi?

Bu her True olma durumda LSec daha önce boş da olabilir, bir önceki döngüde değer de almış olabilir.

Siz ne yapacaksınız, LSec'in gözünün yaşına bakmadan bir önceki durum değeri ne olduğu önemsiz, yanına virgül koyup yeni seçili modül adını ekleyeceksiniz. Yani LSec := Lsec + ', yeni değer' ;

Döngü bitince de nihayetinde elinizdeki LSec değişkeninde yan yana virgüllü halde Modül isimleri yet alacak.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#44
(17-10-2021, Saat: 16:52)mrmarman Adlı Kullanıcıdan Alıntı: LSec başlangıçta (döngünün dışında) boş değil mi?

Döngü içerisinde Case bloğuna bakalım,  her seçili modül için bir True oluşuyor. Görebildiniz mi?

Bu her True olma durumda LSec daha önce boş da olabilir, bir önceki döngüde değer de almış olabilir.

Siz ne yapacaksınız, LSec'in gözünün yaşına bakmadan bir önceki durum değeri ne olduğu önemsiz, yanına virgül koyup yeni seçili modül adını ekleyeceksiniz. Yani LSec := Lsec + ', yeni değer' ;

Döngü bitince de nihayetinde elinizdeki LSec değişkeninde yan yana virgüllü halde Modül isimleri yet alacak.

Durum değişmedi.
Var
t:Integer;
LSec1,LSec : String;
begin
t:=CheckListBox1.ItemIndex;
LSec := '';
   if CheckListBox1.Checked[t] then
   Case t of
    0:LSec1:='İcmal Raporu';
    1:LSec1:='Ayrıntılı K.D.V İcmal Raporu';
    2:LSec1:='K.D.V İcmal Raporu';
End;

for t := 0 to TCheckListBox(Sender).Count-1 do
  if TCheckListBox(Sender).Checked[t] then
   begin
    if LSec1 = '' then LSec1 := TCheckListBox(Sender).Items[t]
                    else
                    LSec1 := LSec1 + ', ' + Lsec
End;
Memo1.Lines.Text := LSec1;

Şöyle bir şey düşündüm, Bir tane daha CheckListBox2 ekleyeyim bura dada  'İcmal Raporu' , 'Ayrıntılı K.D.V İcmal Raporu', ....... sonrasın da CheckListBox1 de işaretlediğim Modülün karşılığı CheckListBox2 da Memo1 e yazdırayım. Bulamadığım CheckListBox1.Checked = CheckListBox2.Checked eşitlemesiydi.
Cevapla
#45

procedure TForm1.CheckListBox1Click(Sender: TObject);
Var
  t           : Integer;
  LSec1, LSec : String;
begin
  t := CheckListBox1.ItemIndex;
  LSec  := '';
  LSec1 := '';
  for t := 0 to CheckListBox1.Count-1 do
    if CheckListBox1.Checked[t] then
    begin
      LSec  := LSec  + TCheckListBox(Sender).Items[t] + ',';

      Case t of
        0:  begin
              LSec1 := LSec1 + 'İcmal Raporu, ';
            end;
        1:  begin
              LSec1 := LSec1 + 'Ayrıntılı K.D.V İcmal Raporu, ';
            end;
        2:  begin
              LSec1 := LSec1 + 'K.D.V İcmal Raporu, ';
            end;
      End;
    end;
  if LSec1 <> '' then
  begin
    System.Delete(LSec1,  Length(LSec1)-1 , 2 ); // sondaki boş virgülü sildik...
    System.Delete(LSec,   Length(LSec)    , 1 ); // sondaki boş virgülü sildik...
  end;
  Memo1.Lines.Text := LSec;
  Memo1.Lines.Add(LSec1);
end;

Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#46
(17-10-2021, Saat: 18:21)mrmarman Adlı Kullanıcıdan Alıntı:

procedure TForm1.CheckListBox1Click(Sender: TObject);
Var
  t           : Integer;
  LSec1, LSec : String;
begin
  t := CheckListBox1.ItemIndex;
  LSec  := '';
  LSec1 := '';
  for t := 0 to CheckListBox1.Count-1 do
    if CheckListBox1.Checked[t] then
    begin
      LSec  := LSec  + TCheckListBox(Sender).Items[t] + ',';

      Case t of
        0:  begin
              LSec1 := LSec1 + 'İcmal Raporu, ';
            end;
        1:  begin
              LSec1 := LSec1 + 'Ayrıntılı K.D.V İcmal Raporu, ';
            end;
        2:  begin
              LSec1 := LSec1 + 'K.D.V İcmal Raporu, ';
            end;
      End;
    end;
  if LSec1 <> '' then
  begin
    System.Delete(LSec1,  Length(LSec1)-1 , 2 ); // sondaki boş virgülü sildik...
    System.Delete(LSec,   Length(LSec)    , 1 ); // sondaki boş virgülü sildik...
  end;
  Memo1.Lines.Text := LSec;
  Memo1.Lines.Add(LSec1);
end;

Üstadım şunu yapmaya çalıştım, diğer türlü karışık geliyor.
 
Modül 1 : 'Ayrıntılı K.D.V İcmal Raporu'
Modül 2 : 'K.D.V İcmal Raporu'
Modül 3 : 'Satış ve İade Toplam Raporu'

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
Var
 t           : Integer;
 LSec1, LSec : String;
begin
 t := CheckListBox1.ItemIndex;
 LSec  := '';
 LSec1 := '';
 for t := 0 to CheckListBox1.Count-1 do
   if CheckListBox1.Checked[t] then
   begin
     LSec  := LSec + TCheckListBox(Sender).Items[t] + ',';
    Case t of
       0:  begin
             LSec1 := 'Ayrıntılı K.D.V İcmal Raporu,' + sLineBreak;
           end;
       1:  begin
             LSec1 := 'K.D.V İcmal Raporu,'+ sLineBreak;
           end;
       2:  begin
             LSec1 := 'Satış ve İade Toplam Raporu, '+ sLineBreak;
           end;
     End;
   end;
 if LSec1 <> '' then
 begin
   System.Delete(LSec1, Length(LSec1)-1 , 2 ); // sondaki boş virgülü sildik...
   System.Delete(LSec, Length(LSec) , 1 ); // sondaki boş virgülü sildik...
 end;
 Memo1.Lines.Add(LSec +':  '+LSec1);
end;
Cevapla
#47
yorumsuz.....

procedure TForm1.CheckListBox1Click(Sender: TObject);
Var
 t           :Integer;
 LSec1, LSec : String;
begin
 t := CheckListBox1.ItemIndex;
 LSec  := '';
 LSec1 := '';
 for t := 0 to CheckListBox1.Count-1 do
   if CheckListBox1.Checked[t] then
   begin
     LSec  := LSec  + TCheckListBox(Sender).Items[t] + ',';

     Case t of
       0:  begin
             LSec1 := LSec1 + TCheckListBox(Sender).Items[t] + ' : İcmal Raporu' + sLineBreak;
           end;
       1:  begin
             LSec1 := LSec1 + TCheckListBox(Sender).Items[t] + ' : Ayrıntılı K.D.V İcmal Raporu' + sLineBreak;
           end;
       2:  begin
             LSec1 := LSec1 + TCheckListBox(Sender).Items[t] + ' : K.D.V İcmal Raporu' + sLineBreak;
           end;
     End;
   end;
 Memo1.Lines.Text := LSec1;
//Memo1.Lines.Add(LSec2);
end;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#48
(17-10-2021, Saat: 19:53)mrmarman Adlı Kullanıcıdan Alıntı: yorumsuz.....

procedure TForm1.CheckListBox1Click(Sender: TObject);
Var
 t           :Integer;
 LSec1, LSec : String;
begin
 t := CheckListBox1.ItemIndex;
 LSec  := '';
 LSec1 := '';
 for t := 0 to CheckListBox1.Count-1 do
   if CheckListBox1.Checked[t] then
   begin
     LSec  := LSec  + TCheckListBox(Sender).Items[t] + ',';

     Case t of
       0:  begin
             LSec1 := LSec1 + TCheckListBox(Sender).Items[t] + ' : İcmal Raporu' + sLineBreak;
           end;
       1:  begin
             LSec1 := LSec1 + TCheckListBox(Sender).Items[t] + ' : Ayrıntılı K.D.V İcmal Raporu' + sLineBreak;
           end;
       2:  begin
             LSec1 := LSec1 + TCheckListBox(Sender).Items[t] + ' : K.D.V İcmal Raporu' + sLineBreak;
           end;
     End;
   end;
 Memo1.Lines.Text := LSec1;
//Memo1.Lines.Add(LSec2);
end;

Emeğine , Yüreğine sağlık üstadım.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Modüllere Hak Vermek OZCANK 11 2.071 08-07-2021, Saat: 18:50
Son Yorum: nguzeller
  Tag'larına göre componentleri bulma [Çözüldü] Mesut 4 369 05-07-2021, Saat: 11:05
Son Yorum: Mesut
  Form üzerindeki nesnelerin konumuna göre yazdırılması tmrksmt 7 629 27-05-2021, Saat: 23:30
Son Yorum: tmrksmt
  FastReportta Koşula göre ikinci sayfa goko1234 4 741 02-04-2021, Saat: 13:57
Son Yorum: ozcanm
  Seçilen Veri Tabanına Göre Bağlantı Sağlanması bnyamin86 2 919 30-09-2020, Saat: 10:15
Son Yorum: bnyamin86



Konuyu Okuyanlar: 1 Ziyaretçi