popup menu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

popup menu

Mesaj gönderen abdulkadir »

Herkese merhaba
öncelikle ne yapmak istedigimi anlatayım sonra soruna geleyim.

dbgride sag tıklyor acılan popupmenuden secili satırı PopupMenu.ini ye kaydediyorum

Kod: Tümünü seç

[CR00006]
UNVANI=ALHMET.
BLKODU=1
BLCRKODU=CR00006
[CR00008]
UNVANI=SALIH
BLKODU=2
BLCRKODU=CR00008
[CR00009]
UNVANI=SERDAR
BLKODU=3
BLCRKODU=CR00009
[CR00016]
UNVANI=MEHMET
BLKODU=4
BLCRKODU=CR00016
simdi sorun diger bir formun popupMenusunde Bunları gormek istiyorum.
teker teker ceksem oluyor

ama popupmenu.ini ilksatırdan baslayıp son satıra kadar tüm baslıkları nasıl alıcam
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: popup menu

Mesaj gönderen Battosai »

Bir tane stringlist oluşturup loadfromfile ile *ini dosyanızı yükle sonra döngüye sokarak meseleyi çözersin...

Kod: Tümünü seç

var
List:TstringList;
i:integer;
Begin
 try
   List:=Tstringlist.create;
   List.loadfromfile(dosya);
     for i := 0 to list.count-1 do
      ............................./// artık burayı tamamlarsın nasıl istiyorsan.
 finally
  List.free;
 End;
Eng;
Zaten bana noktalı yer lazım diyorsan orasıda sana beyin cimlastiği olur :twisted: ...Hem hücre değerlerini popup menuye atarak ne yapmak istiyorsun ki...zahmetli bir yöntem seçmişsin sanki.
Aslında ne yapmak istediğin tam olarak izah edersen daha iyi tavsiyeler gelebilir...
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: popup menu

Mesaj gönderen conari »

Bir çeşit Hint olabilirmi?
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Re: popup menu

Mesaj gönderen abdulkadir »

Hint için degil
popupmenu sık kullanılan menüm olacak

db deki kayıtların id numarasını ve adını saklayıp okumam lazım

ve program içinde bu menü düzünlenebilmeli bu yüzden ini ye yazmayı tercih ettim

stream kullanmak daha hızlı halleder ama zaman ister ögrenmek lazım;
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Re: popup menu

Mesaj gönderen abdulkadir »

biraz degişiklik yapıp duzenledim oldu ama sanki kastırıyor gibi.

istedigimi elde etsemde tavsiyenizi bekliyecem

DÜZENLEMELER

.ini ye kaydı bu sekilde degiştirdim

ID AD_SOYAD

Kod: Tümünü seç

13=AHMET SOYADI
22=SALIH SOYADI
12=MURAT SOYADI
8=SABRİ SOYADI vs vs
Şimdilik popup kısmını Yapmadım Ama listview e aktardım.
listviewin captiona AD_SOYAD, imageindex inede ID alanını ekleyerek devam ettim


yeni fikirlerim var ama sizlrinde fikrini aldıktan sonra devam ederim inş.

Kod: Tümünü seç

procedure TMainForm.HzlMenDzenleClick(Sender: TObject);
var
  Hizli:  THizliMenuForm;
  IniFile: TCustomIniFile;
  SName: TStringList;
  SValues: TStringList;
  FileName,S,F,T: string;
  I,x:integer;
  ListItem: TListItem;
 begin
  FileName :=ExtractFilePath(Application.exename)+'\INI\HIZLI_MENU.ini';
  Hizli := THizliMenuForm.Create(nil);
  IniFile:= TIniFile.Create(FileName);

  SName := TStringList.Create;
  SValues := TStringList.Create;
  iniFile.ReadSection('CARI', SName);
  iniFile.ReadSectionValues('CARI', SValues);
  
 try
  with Hizli do begin
      ListView1.Clear;
      
       for I := 0 to SName.Count-1 do   begin
       S := IniFile.ReadString('CARI', SName.strings[i], '');
       T:=SValues.strings[i];
       x:= pos('=',T);
       F:=  LeftStr(T,x-1);
       
       with ListView1 do   begin
      ListItem := Items.Add;
      Listitem.Caption := s;
      ListItem.ImageIndex :=StrToInt(f);
    end; 
   end; 
      
      if ShowModal = mrOk then
        //ayarları guncelleme alanı
       end;
       
      finally
     Hizli.Free;
    IniFile.Free;
  SName.Free;
 end;
end;
listviewden okurkende

Kod: Tümünü seç

procedure THizliMenuForm.ListView1Click(Sender: TObject);
begin
    try
     panel1.Caption:=ListView1.Selected.Caption + inttostr(ListView1.Selected.ImageIndex); 
      // ShowMessage(ListView1.Selected.Caption + inttostr(ListView1.Selected.ImageIndex));
    except
      panel1.Caption:='secim yok'; 
    end;
end;
Şimdilik bu kadar devamında ne olur görecez...
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: popup menu

Mesaj gönderen mrmarman »

INIFile içinden ana başlıkları liste olarak alabilir, bu başlıkları döngü ile dolaşıp içeriğini alabilirsiniz.

Kod: Tümünü seç

Var
  INI : TINIFile;
begin
  INI := TINIFile.Create( ChangeFileExt(Application.Exename, '.INI'));
  INI.ReadSections( Memo1.Lines );
  INI.Free;
end;
Resim
Resim ....Resim
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Re: popup menu

Mesaj gönderen abdulkadir »

Hocam bana mesela
13=AHMET SOYADI

"=" den hem öncesi hemde sonrası lazım...

yukarda yaptıgım sekildi istedigim sonucu alıyorum
acaba daha az kod yazarak da hızlı calısacak bir yontem varmı....

ilginize tesekkürler
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: popup menu

Mesaj gönderen mrmarman »

Almak istediğin sonuç için her iki şekil için de örnek hazırladım.
Resim
1. örnek için INIDosyası

Kod: Tümünü seç

[CR00006]
UNVANI=ALHMET.
BLKODU=1
BLCRKODU=CR00006
[CR00008]
UNVANI=SALIH
BLKODU=2
BLCRKODU=CR00008
[CR00009]
UNVANI=SERDAR
BLKODU=3
BLCRKODU=CR00009
[CR00016]
UNVANI=MEHMET
BLKODU=4
BLCRKODU=CR00016
INIBasliklari(1).rar
1 nolu örnek
(215.55 KiB) 110 kere indirildi

Kod: Tümünü seç

Var
  i     : Integer;
  Liste : TStringList;
begin
  Liste := TStringList.Create;
  With TINIFile.Create(ChangeFileExt(Application.Exename, '.INI') ) do begin
    ReadSections( Liste );
    for i := 0 to Liste.Count - 1 do With ListView1.Items.Add do begin
      Caption := IntToStr(i);
      SubItems.Add( ReadString( Liste[i], 'UNVANI', '-') );
      SubItems.Add( ReadString( Liste[i], 'BLKODU', '-') );
      SubItems.Add( ReadString( Liste[i], 'BLCRKODU', '-') );
    end;
    Free;
  end;
  Liste.Free;
end;
Resim
2. Örnek için INI Dosyası

Kod: Tümünü seç

[TEKBASLIK]
13=AHMET SOYADI
22=SALIH SOYADI
12=MURAT SOYADI
8=SABRİ SOYADI
INI Basliklari Almak (2).rar
2 nolu örnek
(231.69 KiB) 131 kere indirildi

Kod: Tümünü seç

Var
  i     : Integer;
  Liste : TStringList;
begin
  Liste := TStringList.Create;
  With TINIFile.Create(ChangeFileExt(Application.Exename, '.INI') ) do begin
    ReadSection( 'TEKBASLIK', Liste );
    for i := 0 to Liste.Count - 1 do With ListView1.Items.Add do begin
      Caption := IntToStr(i);
      SubItems.Add( Liste[i] );
      SubItems.Add( ReadString( 'TEKBASLIK', Liste[i], '-') );
    end;
    Free;
  end;
  Liste.Free;
end;
En son mrmarman tarafından 01 Nis 2011 08:50 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Resim
Resim ....Resim
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Re: popup menu

Mesaj gönderen abdulkadir »

hocam tesekkür ederim
sizin verdiginiz daha cok işime yarayacak
sıralama yapma imkanımda olacak hemen uygulayacam tesekkür ederim.
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Re: popup menu

Mesaj gönderen husonet »

abdulkadir yazdı:
Hint için degil
popupmenu sık kullanılan menüm olacak

db deki kayıtların id numarasını ve adını saklayıp okumam lazım

ve program içinde bu menü düzünlenebilmeli bu yüzden ini ye yazmayı tercih ettim

stream kullanmak daha hızlı halleder ama zaman ister ögrenmek lazım;
hocam bu işler için en güzel yöntem base form hazırlamaktır, daha basit ve sorunsuz olur... Sonuçta işleyeceğin değer id her table dada id tutuyorsan base form hazırlaman yeterli olur. Popup menune yeni ilaveleride türettiğin formlardan ilave edersin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Re: popup menu

Mesaj gönderen abdulkadir »

S.a
ini dosya islemini biraz gelistirmeye calsıtım
hem yeniler icin bir örnek olur hemde işimizi görürdük.


ekle, kaydet, sil, icon, font, color, up ,down, dragdrop özelliklerini ekledim
maksat popupmenüyü özellestirmek
Ama tam bitmedi.

Resim

su an anlam veremedigim bir sorun var
ini deki kayıtları listview ve popupmenüye akatarıyorum
lisviewde sıralama
A....Z
iken popupmenude
Z....A
oluyor.
inide INDEX diye bir alan tanımladım menudeki dizilim bu index numarasına göre listelensin diye

Resim

programı incelemek icin burdan idirilebilirsiniz.
http://www.leventler.com.tr/downloads.p ... nload_id=2
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: popup menu

Mesaj gönderen mrmarman »

Merhaba

Sıralama konusundaki sorunsal "add" yerine "insert" kullanmış olmandan kaynaklı...
Resim
Resim ....Resim
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Re: popup menu

Mesaj gönderen abdulkadir »

hocam tebrik ve tesekkür ederim
insert yerine add kullanınca olay cözüldü
yanlız bir degisiklikligi yazmakta fayda var

sırlamayı degiştirdikten sonra dosyayı silmek gerekiyor
zaten siliyordum ama siilme islemini iptal etmistim.

//DeleteFile(FileName); önündeki karakterleri kaldırdım.

Kod: Tümünü seç

procedure TListw.KAYDET;
var
  i     : Integer;
  FileName : string;
begin
  FileName :=ExtractFilePath(Application.exename)+'INI_Basliklar.ini';
  Screen.Cursor:=crHourGlass;
  DeleteFile(FileName); // degisikligin uygulanabilmesi icin dosya yeniden olusturulmalı
  With TIniFile.Create(FileName) do begin
    With ListView1 do begin
   for i := 0 to Items.Count -1 do  begin
     WriteString(Items[i].SubItems.Strings[0], 'INDEX' ,IntToStr(Items[i].Index));
     WriteString(Items[i].SubItems.Strings[0], 'IMG' ,IntToStr(Items[i].ImageIndex));
     WriteString(Items[i].SubItems.Strings[0], 'BLKODU' ,Items[i].SubItems.Strings[0]);
     WriteString(Items[i].SubItems.Strings[0], 'BLCRKODU' ,Items[i].SubItems.Strings[1]);
     WriteString(Items[i].SubItems.Strings[0], 'UNVANI',Items[i].SubItems.Strings[2]);
      end; 
     end;
    Free; 
 end;
  Screen.Cursor:=crDefault; 
end;
ve degisen satır

Kod: Tümünü seç

iptal edilen satır
//Items.Items[2].Insert(0,menuItem);  //Favoru sekmesine eklmek icin Items[2] 

yeni sekil

Items.Items[2].add(menuItem);  //Favoru sekmesine eklmek icin Items[2]   
saglıcakla kalın iyi calısmalar...
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
Cevapla