denizfatihi yazdı:Merhaba,
Aşağıdaki şekilde bir ürünün durumunu kontrol etmek istiyorum, PopupMenu kullanıyorum ilk aşamada doğru çalışıyor sonrasında tüm butonlar pasif halde kalıyor. Sıralama yaparken sıralama için aktif/pasif nasıl yapabilirim ? şimdiden teşekkür ederim, iyi çalışmalar.
Kod: Tümünü seç
procedure TForm2.GarantiSresindeSevk1Click(Sender: TObject);
var
i : Integer;
NewItem:TMenuItem;
begin
with Sender as TMenuItem do
begin
case Tag of
0: if (dbedit29.Text='1')
then begin
Qr_Update_Servis_Tipi.SQL.Clear;
Qr_Update_Servis_Tipi.Close;
Qr_Update_Servis_Tipi.SQL.text:='UPDATE TEKNIKILK ';
Qr_Update_Servis_Tipi.SQL.Add('SET DURUMU= 2 ');
Qr_Update_Servis_Tipi.SQL.Add('WHERE ID='''+dbedit28.Text+'''');
Qr_Update_Servis_Tipi.ExecSQL;
Tb_Servis.Close;
Tb_Servis.Open;
PopupMenu1.Items[0].Enabled:=false;
//PopupMenu1.Items[1].Enabled:=false;
PopupMenu1.Items[2].Enabled:=false;
PopupMenu1.Items[3].Enabled:=false;
PopupMenu1.Items[4].Enabled:=false;
PopupMenu1.Items[5].Enabled:=false;
PopupMenu1.Items[6].Enabled:=false;
procedure TForm2. OnayBekliyor1Click (Sender: TObject);
var
var
i : Integer;
NewItem:TMenuItem;
begin
with Sender as TMenuItem do
begin
case Tag of
0: if (dbedit29.Text='1')
then begin
Qr_Update_Servis_Tipi.SQL.Clear;
Qr_Update_Servis_Tipi.Close;
Qr_Update_Servis_Tipi.SQL.text:='UPDATE TEKNIKILK ';
Qr_Update_Servis_Tipi.SQL.Add('SET DURUMU= 2 ');
Qr_Update_Servis_Tipi.SQL.Add('WHERE ID='''+dbedit28.Text+'''');
Qr_Update_Servis_Tipi.ExecSQL;
Tb_Servis.Close;
Tb_Servis.Open;
PopupMenu1.Items[0].Enabled:=false;
//PopupMenu1.Items[1].Enabled:=false;
PopupMenu1.Items[2].Enabled:=false;
PopupMenu1.Items[3].Enabled:=false;
PopupMenu1.Items[4].Enabled:=false;
PopupMenu1.Items[5].Enabled:=false;
PopupMenu1.Items[6].Enabled:=false;
http://dosya.co/rue68fhdcxow/Adsız.bmp.html
Öncelikle Qr_Update_Servis_Tipi nesnesinin SQL cümlesini sürekli güncellemeye gerek yok. Parametre tanımlayıp sadece parametre değiştirerek istediğinizi elde edebilirsiniz. Delphi içinde tasarım esnasında Qr_Update_Servis_Tipi.SQL içine aşağıdaki ifadeleri yazın.
Kod: Tümünü seç
UPDATE TEKNIKILK
SET DURUMU= 2
WHERE ID=:ID
Daha sonra güncelleme gereken yerde aşağıdaki gibi bir kod yazabilirsiniz.
Kod: Tümünü seç
Qr_Update_Servis_Tipi.Close();
Qr_Update_Servis_Tipi.Params[0].AsString := dbedit28.Text;
Qr_Update_Servis_Tipi.Open();
Aynı şekilde Tb_Servis nesnesini kapatıp açmak yerine Refresh() prosedürünü aşağıdaki gibi kullanabilirsiniz.
PopupMenu kontrolüne gelince. Birçok farklı yöntem ile yapılabilir. İlk aklıma gelen yöntemi örnek veriyorum:
1- Öncelikle Menü nesnelerinin TAG özelliklerine sırası ile numaralandırma yapılır.
2- Tüm Menü nesnelerinin tıklamaları aynı prosedüre yönlendirilir. Ayrı ayrı tıklama prosedürleri olmaz.
3- Tıklama gerçekleştiği zaman tıklanan menü nesnesi TAG özelliğinden okunarak TAG+1 olan nesne dışındakiler pasif yapılır.
4- Esas database işlemleri gerçekleştirilir.
Ekte bunu gerçekleştiren örnek uygulama mevcuttur. Uygulama Delphi 10.1 ile oluşturulduğu için açılışta bazı hata uyarılar verebilir. Unit içindeki kod aşağıdaki gibidir.
Kod: Tümünü seç
unit Unit15;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.Menus;
type
TForm15 = class(TForm)
PopupMenu1: TPopupMenu;
Onarlyor1: TMenuItem;
GarantiSresindeSevk1: TMenuItem;
OnayBekliyor1: TMenuItem;
ParaBekliyor1: TMenuItem;
FiyatBekliyor1: TMenuItem;
HurdayaAyrld1: TMenuItem;
eslimEdildi1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure eslimEdildi1Click(Sender: TObject);
private
{ Private declarations }
procedure ResetPopupMenu(const Menu: TPopupMenu);
public
{ Public declarations }
end;
var
Form15: TForm15;
implementation
{$R *.dfm}
procedure TForm15.ResetPopupMenu(const Menu: TPopupMenu);
var
i: Integer;
begin
for i := 1 to Menu.Items.Count-1 do
begin
if i = 0 then
Menu.Items[i].Enabled := True
else
Menu.Items[i].Enabled := False;
Menu.Items[i].Tag := i;
end;
end;
procedure TForm15.eslimEdildi1Click(Sender: TObject);
procedure DisablePopupMenus(const Menu: TPopupMenu);
var
i: Integer;
begin
for i := 0 to Menu.Items.Count-1 do
Menu.Items[i].Enabled := False;
end;
procedure SetEnabled(const Menu: TPopupMenu; const Index: Integer);
var
i: Integer;
begin
for i := 0 to Menu.Items.Count-1 do
begin
if i = Index + 1 then
Menu.Items[i].Enabled := True
else
Menu.Items[i].Enabled := False;
end;
end;
var
Item: TMenuItem;
begin
Item := TMenuItem(Sender);
ResetPopupMenu(PopupMenu1);
SetEnabled(PopupMenu1, Item.Tag);
case Item.Tag of
0: begin
// if (dbedit29.Text='1') then
// begin
// Qr_Update_Servis_Tipi.Close();
// Qr_Update_Servis_Tipi.Params[0].AsString := dbedit28.Text;
// Qr_Update_Servis_Tipi.Open();
//
// Tb_Servis.Refresh();
// end;
end;
end;
end;
procedure TForm15.FormCreate(Sender: TObject);
begin
ResetPopupMenu(PopupMenu1);
// Qr_Update_Servis_Tipi.Close();
// Qr_Update_Servis_Tipi.SQL.Clear();
// Qr_Update_Servis_Tipi.SQL.Add('UPDATE TEKNIKILK');
// Qr_Update_Servis_Tipi.SQL.Add('SET DURUMU= 2');
// Qr_Update_Servis_Tipi.SQL.Add('WHERE ID=:ID');
end;
end.