delphide pencere kontrolü?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

bu arada ben hala soruma cevap arıyorum
butona bir tane daha atama yapmam lazım o da listeden mouse ile seçmeden önce direkt ilk itemi seçmek
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Kod: Tümünü seç

ListBox1.ItemIndex:=0
Artık bunu nereye yazarsan.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

P206 seni çok yoruyoruz artık kusura bakmııcan :mrgreen:

çok teşekkürler sonsuz saygılar
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Önemli değil.
Bende bundan yaklaşık 3-4 sene önce bir Foruma sorduğum ilk soru aklıma geldi. Listbox ın içindeki değeri nasıl alırım gibi bişeydi. Sorumu olmasa da cevabı çok iyi hatırlıyorum.

Kod: Tümünü seç

listbox1.items[listbox1.itemindex]
Kolay Gelsin.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

arkiler program bitti ama çok büyük bir eksik ve bir hata var.
Pencere sürekli aktif diil sizin pencereyi sürekli üste almanız ve insert tuşuna basmanız gerekiyor.
Sonra istediğiniz pencereyi Katl-i Vacip listesine atın (Aman yanlış anlamayın heea :cry: )
Sonra da aşağıda bi düğme war oraya basarsanız program sonsuza kadar hem istemediğiniz web adreslerinden hem de pencerelerden kurtarabilirsiniz (Başlık alarak çalıştığı için birkaç hata olabilir diye silme özelliği de war :) )

bu arada bana şu trayicon componentini kullanamayı öğretin yaaa
trayicona iniyor program ancak resim çıkmıyor

hatalar varsa düzelttikten sonra bana da bildirirseniz ayrıca sevinirim

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Menus, ExtCtrls, Buttons, ImgList, TrayIcon;

type
  TForm1 = class(TForm)
    blok_listesine_ekle: TButton;
    liste1: TListBox;
    surekli_prog_katlet: TButton;
    prog_kapat: TButton;
    Timer1: TTimer;
    liste2: TListBox;
    ListedenCikart: TButton;
    ayrintilar: TButton;
    basit: TButton;
    PopupMenu1: TPopupMenu;
    BlokListesineEkle1: TMenuItem;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    ListedenKaldir1_liste1: TMenuItem;
    PopupMenu2: TPopupMenu;
    ListedenKaldir_Liste2: TMenuItem;
    BlokListesineEkle2: TMenuItem;
    dur: TButton;
    Timer2: TTimer;
    sec: TButton;
    TrayIcon1: TTrayIcon;
    ImageList1: TImageList;
    PopupMenu3: TPopupMenu;
    ProgramiGoster_menu: TMenuItem;
    ProgramiKapat_menu: TMenuItem;
    TaramayiBaslat_menu: TMenuItem;
    TaramayiDurdur_menu: TMenuItem;
    ProgramiGizle_menu: TMenuItem;
    SpeedButton3: TSpeedButton;
    Listeyi_kaydet: TButton;
    procedure blok_listesine_ekleClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure prog_kapatClick(Sender: TObject);
    procedure ayrintilarClick(Sender: TObject);
    procedure basitClick(Sender: TObject);
    procedure ListedenCikartClick(Sender: TObject);
    procedure surekli_prog_katletClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure ListedenKaldir1_liste1Click(Sender: TObject);
    procedure ListedenKaldir_Liste2Click(Sender: TObject);
    procedure durClick(Sender: TObject);
    procedure secClick(Sender: TObject);
    procedure ProgramiGoster_menuClick(Sender: TObject);
    procedure ProgramiKapat_menuClick(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure Listeyi_kaydetClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ProgramiGizle_menuClick(Sender: TObject);

  private
    { Private declarations }
  public

  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.blok_listesine_ekleClick(Sender: TObject);
var 
  HFare : HWND;
  HSonrakiWinMsg:HWND;
  isaretleyici : TPOINT; 
  baslikUzunlugu : integer; 
  baslik : string;
begin
  GetCursorPos(isaretleyici);
  HFare := WindowFromPoint(isaretleyici); 
  if HFare = HSonrakiWinMsg then Exit;
  HSonrakiWinMsg := HFare; 
  baslikUzunlugu := SendMessage(HFare, WM_GETTEXTLENGTH, 0, 0) + 1; 
  SetLength(baslik, baslikUzunlugu); 
  SendMessage(HSonrakiWinMsg, WM_GETTEXT, baslikUzunlugu,LongInt(@baslik[1]));
  liste1.items.add(baslik);
  liste1.items.savetoFile('c:\kill.txt')

  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
basit.click;
liste2.items.LoadFromFile('c:\kill.txt');
end;

procedure ProgramKapat(Baslik:String);
Var
  h : THandle;
begin
h := FindWindow( nil, PChar(Baslik));
if h <> 0 then PostMessage(h, WM_CLOSE, 0, 0);
end;

procedure TForm1.prog_kapatClick(Sender: TObject);
begin
if not liste2.itemindex = -1 then
        begin
        ProgramKapat(liste2.items[0]);
        liste2.Items.Move(Liste2.ItemIndex,Liste2.Items.Count-1);
        end
else
        begin
        end
end;

procedure TForm1.ayrintilarClick(Sender: TObject);
begin
ayrintilar.visible:=false;
form1.borderstyle:=BsSingle;
form1.height:=335;
form1.width:=255;
end;

procedure TForm1.basitClick(Sender: TObject);
begin
ayrintilar.visible:=true;
ayrintilar.top:=0;
ayrintilar.left:=0;
form1.borderstyle:=BsToolWindow;
form1.height:=47;
form1.width:=126;
end;

procedure TForm1.ListedenCikartClick(Sender: TObject);
begin
liste2.Items.Delete(liste2.itemindex);
end;

procedure TForm1.surekli_prog_katletClick(Sender: TObject);
begin
taramayibaslat_menu.enabled:=false;
TaramayiDurdur_menu.enabled:=true;
dur.enabled:=true;
surekli_prog_katlet.enabled:=false;
timer2.enabled:=true;
timer1.enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if not liste2.itemindex = -1 then
        if length(liste2.items[liste2.itemindex]) = 0 then
else
        begin
        ProgramKapat(liste2.items[0]);
        liste2.items.Delete(liste2.itemindex);
        end
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if liste2.itemindex = -1 then
        begin
        showmessage('Seç');
        end
else
        begin
        liste1.items.Add(liste2.items[liste2.itemindex]);
        liste2.items.Delete(liste2.itemindex)
        end
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if liste1.itemindex = -1 then
        begin
        showmessage('Seç');
        end
else
        begin
        liste2.items.Add(liste1.items[liste1.itemindex]);
        liste1.items.Delete(liste1.itemindex)
        end;
end;

procedure TForm1.ListedenKaldir1_liste1Click(Sender: TObject);
begin
liste1.items.Delete(liste1.itemindex)
end;

procedure TForm1.ListedenKaldir_Liste2Click(Sender: TObject);
begin
liste2.items.Delete(liste2.itemindex)
end;

procedure TForm1.durClick(Sender: TObject);
begin
surekli_prog_katlet.enabled:=true;
taramayibaslat_menu.enabled:=true;
TaramayiDurdur_menu.enabled:=false;
dur.enabled:=false;
timer1.enabled:=false;
timer2.enabled:=false;
end;

procedure TForm1.secClick(Sender: TObject);
begin
liste2.ItemIndex:=0;
end;

procedure TForm1.ProgramiGoster_menuClick(Sender: TObject);
begin
programigizle_menu.enabled:=true;
programigoster_menu.enabled:=false;
form1.show;
end;

procedure TForm1.ProgramiKapat_menuClick(Sender: TObject);
begin
form1.close;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
if liste1.itemindex = -1 then
        begin
        showmessage('Listede Program Yok ki');
        end
else
        begin
        liste2.items.add(liste1.Items[liste1.itemindex]);
        liste1.items.Delete(liste1.itemindex);
        liste2.Items.SaveToFile('c:\kill.txt');
        prog_kapat.Click;
        end
end;

procedure TForm1.Listeyi_kaydetClick(Sender: TObject);
begin
liste1.items.savetoFile('c:\kill.txt')
end;

procedure TForm1.FormShow(Sender: TObject);
begin
trayicon1.active:=true;
end;

procedure TForm1.ProgramiGizle_menuClick(Sender: TObject);
begin
programigizle_menu.enabled:=false;
programigoster_menu.enabled:=true;
form1.hide;
end;

end.
Kullanıcı avatarı
derya
Kıdemli Üye
Mesajlar: 68
Kayıt: 16 May 2004 02:43
Konum: Almanya/Bonn
İletişim:

Mesaj gönderen derya »

Kod: Tümünü seç

procedure TForm1.Timer1Timer(Sender: TObject); 
begin 
if not liste2.itemindex = -1 then 
        if length(liste2.items[liste2.itemindex]) = 0 then 
else 
        begin 
        ProgramKapat(liste2.items[0]); 
        liste2.items.Delete(liste2.itemindex); 
        end 
end; 
burada bir hata var. ikinci if'den sonra ne olacak? Ve itemindex -1 degilse hep listedeki birinci pencereyi kapatir.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

derya rica etsem biraz daha detaylı yazar mısın

hangi pencere?

kodu ben yazdım diye bakma biraz daha detaylandır
Kullanıcı avatarı
derya
Kıdemli Üye
Mesajlar: 68
Kayıt: 16 May 2004 02:43
Konum: Almanya/Bonn
İletişim:

Mesaj gönderen derya »

Kod: Tümünü seç

ProgramKapat(liste2.items[0]); 
burada hep litedeki birinci pencereyi kapatir, böyle olmasi gerekiyor

Kod: Tümünü seç

ProgramKapat(liste2.items[liste2.itemindex]); 
Procedure galiba böyle daha iyi:

Kod: Tümünü seç

procedure TForm1.Timer1Timer(Sender: TObject); 
begin 
if liste2.itemindex = -1 then 
        liste2.itemindex: = 0;  //pencere secilmediyse birinci pencereyi sec

if liste2.item[liste2.itemindex] <> '' then //secilen pencerenin adi varsa 
        begin 
        ProgramKapat(liste2.items[ItemIndex]); //pencereyi kapat
        liste2.items.Delete(liste2.itemindex);  // ve listeden sil
        end 
end;
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

senin düşüncenin ne olduğunu çözemedim çünkü kod hata verdi
bir de delphide deneyip düzeltsen kodu

ben söyle düzelttim bu sefer exe hata veriyor. listede program kalmadığı için.

Ben liste2 nin işleyişi yaziiim de sen ona göre düzenle.
liste2 ye liste1 den gelen itemler tarama başlatılınca kapatılıp listenin altına alınıyor. böylece 1.000 tane dahi pencere olsa 1 tane dahi olsa her seferinde düğmeye basma zahmetinden kurtuluyorsun
Kullanıcı avatarı
derya
Kıdemli Üye
Mesajlar: 68
Kayıt: 16 May 2004 02:43
Konum: Almanya/Bonn
İletişim:

Mesaj gönderen derya »

Ben bunu akşama deneye bilirim, ama kendinde cöze bilirsin.
problem listenin boş olmasiysa if ile denetle.

Kod: Tümünü seç

procedure TForm1.Timer1Timer(Sender: TObject); 
begin 
if liste2.Items.Count <> 0 then
  begin
    if liste2.itemindex = -1 then 
        liste2.itemindex: = 0;  //pencere secilmediyse birinci pencereyi sec 

    if liste2.items[liste2.itemindex] <> '' then //secilen pencerenin adi varsa 
      begin 
        ProgramKapat(liste2.items[ItemIndex]); //pencereyi kapat 
        liste2.items.Delete(liste2.itemindex);  // ve listeden sil 
      end;
  end;
end;
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

herkesten özelliklede derya senden özür diliyorum :oops:

ben timer için fonks. yazmışım ancak kullanılmıyo daha doğrusu event'i (ontimer) prog_kapat'a açılıyor. yanii anliicaan bosuna kafanı ütüledim :oops:

ama dersen ki prog_kapat içinde hata var diye bak ona katılabilirim :roll:

neyse formu fazla kirletmiim eger hata goren warsa

http://www.geocities.com/webdeppo2/kill.txt
adresinden takip etsin ve lütfen hata warsa bana bildirsin.
Bayaa bi eksik vardı listeyi kaydetme konusunda onları da düzelttiyorum :-)
bikaç fazlalığı sildim falan filan :lol:
Halen birçok hata war.
En son webaytek tarafından 21 Tem 2004 02:57 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

liste içinde bazı boş değerler oluyor. Bu değerleri sürekli seçip silmek istiyorum da seçme işini yapamadım.

if length(liste1.Items.Text) = 0 then
boş değerli seç ve sil

nasıl yapabilirim :idea:
Kullanıcı avatarı
derya
Kıdemli Üye
Mesajlar: 68
Kayıt: 16 May 2004 02:43
Konum: Almanya/Bonn
İletişim:

Mesaj gönderen derya »

1. liste1.Items.Text olmaz. liste1.items.strings[index'i]. olmasi lazım.
2. Neden length kulanıyorsun? Boş mu dolu mu diye denetlemek istiyorsan if liste1.items.strings[index'i] <> '' veya if liste1.items.strings[index'i] = '' kullanırsan daha iyi
3.Boş degerleri listeye eklemeden önce bul, yane bu 'liste1.items.add(baslik); ' ve benzer satırlardan önce if ile denetle, başlık boşsa eklemene gerekyok
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

tamam olmaz diosan olmaz. :roll:
dikkat ettiysen bazı pencerele captionlarına değil de pencerelere tıklayınca
boş ekliyor. heh senin dediğin gibi olsun ben bunları seçilirken silmek istiyorum
ama senin dediklerin de olmuyor ki bu
index'i
yeni mi çıktı :cry:
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

webaytek yazdı:liste içinde bazı boş değerler oluyor. Bu değerleri sürekli seçip silmek istiyorum da seçme işini yapamadım.

if length(liste1.Items.Text) = 0 then
boş değerli seç ve sil

nasıl yapabilirim :idea:

Kod: Tümünü seç

for i :=liste1.count-1 downto 0 do
  if liste1.items[i].string <> '' then
     liste1.delete[i];

denemedim ama çalışır sanırım
Cevapla