![]() |
|
Kullanıcı bilgilendirme ekranı yapımı hk. - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: Kullanıcı bilgilendirme ekranı yapımı hk. (/showthread.php?tid=4688) Sayfalar:
1
2
|
Kullanıcı bilgilendirme ekranı yapımı hk. - cinarbil - 03-04-2020 Hayırlı cumalar; Program içerisinde bir çok yerde kullanmak üzere bilgilendirme penceresi yapmak istiyorum. Örnek olarak veritabanından xxx adet kayıt siliniyor. try /except /finally içerisine sql sorgusunu göndermeden önce bilgi penceresi procedure çağırarak gönderilen parametre ile tablo siliniyor bekleyin gibi mesaj mı vermeli aynı örnek kayıtlar ekleniyor, güncelleniyor gibi de çoğaltılabilir. finally bölümünde bilgi penceresi kapatılmalı Bunun doğrusu nasıl olmalı. Kullanıcı bilgilendirme ekranı yapımı hk. - hasangoktas - 10-04-2020 Merhaba, FIslem adında bir form oluşturun. Alttaki gibi bir procedure oluşturun, Silme vs işlemleri yaparken bu procedure gönderme işlemi yapın. Sanıyorum istediğiniz bunun gibi birşey. procedure Islem(mesaj: string);
begin
if Application.FindCOmponent('FIslem') = nil then
Application.CreateForm(TFIslem, FIslem);
try
FIslem.Show;
FIslem.LblMesaj.Caption := mesaj;
FIslem.Refresh;
except
on Exception do
end;
end;
Cvp: Kullanıcı bilgilendirme ekranı yapımı hk. - cinarbil - 10-04-2020 (10-04-2020, Saat: 13:40)hasangoktas Adlı Kullanıcıdan Alıntı: Merhaba, FIslem adında bir form oluşturun. Bilgilendirme ve emeğiniz için teşekkür ederim Bende panel ekledim içine label ekledim visible ile yaptım. normalde visible disable kod bölümünde if (data_form.siparis_sorgu.RecordCount>0) then begin Pnl_bilgi.Visible := True; repeat lbl_bilgi_1.Caption:= kf_grupsiparis.Text +' grup siparişinden '+inttostr(data_form.siparis_sorgu.Recno)+' kayıt siliniyor'; lbl_bilgi_1.Update; bayi_siparis_eksilt; //Bayi sipariş eksilt data_form.siparis_sorgu.Delete; //Sipariş dosyasından sil data_form.siparis_sorgu.next; sleep(500); until not data_form.siparis_sorgu.Eof ; // silme işlemi tamam end; Bu şekilde yapıldı bazen numaraları atlıyor ama geçici olarak iş gördü sizin önerinizi denerim Kullanıcı bilgilendirme ekranı yapımı hk. - uparlayan - 10-04-2020 @cinarbil , daha da basit çözülebilir. Projeleriniz için temel bir Diyalog Formu üretebilirsiniz. Buna mesela TBilgiFormu diyelim. Sleep veya panel kullanmak yerine duruma göre TBilgiFormu'na bir timer koyarak belli bir süre sonra kapanmasını sağlayabilirsiniz. Veya süreç sonunda siz bir Flag veya event ile TBilgiFormu'nun kendiliğinden kapanmasını da sağlayabilirsiniz. Cvp: Kullanıcı bilgilendirme ekranı yapımı hk. - cinarbil - 10-04-2020 (10-04-2020, Saat: 14:18)uparlayan Adlı Kullanıcıdan Alıntı: @cinarbil , daha da basit çözülebilir. Teşekkür ederim önerilerinizi yapmaya çalışacağım Kullanıcı bilgilendirme ekranı yapımı hk. - uparlayan - 10-04-2020 Başlangıç olması açısından şöyle bir örnek karaladım, belki bir ışık tutar; Daha kısa olduğu için önce kullanımını örnekleyelim, devamında yapının kaynak kodlarını yazının devamında bulabilirsiniz;
...
...
implementation
{$R *.dfm}
uses
Mesaj_
;
procedure TAna.Button1Click(Sender: TObject);
begin
TMesaj.Goster( Self // Parent Form
, 'Bu mesaj 15 saniye sonra kendini yok edecek.' // Mesajın kendisi
, 15 // Bekleme Süresi (Saniye cinsinden)
, True // Pencere başlığı gizlensin mi / gizlenmesin mi...
);
end;
procedure TAna.Button2Click(Sender: TObject);
var
I: Integer;
aDiyalog: TMesaj;
begin
// Mesaj diyalog formunu oluşturuyoruz
aDiyalog:= TMesaj.Goster(Self,'Bu, aşağıdaki işlem bittiğinde yok olacak...', 0, TRUE);
// aynı kanal içinde uzunca bir iş yapıyoruz...
for I := 0 to 3000 do Memo.Lines.Add(I.ToString); // Elbette temsili bir iş bu...
// İşimiz bitince mesaj diyalog formumuzu kendimiz kapatıyoruz...
FreeAndNil(aDiyalog);
end;
Mesajların gösterileceği diyalog formu ise aşağıdaki gibi...
unit Mesaj_;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, dxGDIPlusClasses;
type
TMesaj = class(TForm)
OtomatikKapat: TTimer;
pnGenel: TPanel;
Logo: TImage;
Panel1: TPanel;
lbMesaj: TLabel;
imClose: TImage;
pnTercih: TPanel;
lbSayac: TLabel;
cxBirDahaGosterMe: TCheckBox;
procedure OtomatikKapatTimer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure imCloseClick(Sender: TObject);
private
{ Private declarations }
FBasliksiz: Boolean;
FBeklemeSuresi: Integer;
FBeklemeSayac: Integer;
procedure SetMesaj(const Value: string);
procedure SetBasliksiz(const Value: Boolean);
procedure SetBeklemeSuresi(const Value: Integer);
public
{ Public declarations }
class function Goster(aOwner: TComponent; aMesaj: string; aBeklemeSuresi: Integer = 10; aBasliksiz: Boolean = True): TMesaj;
end;
implementation
{$R *.dfm}
uses
System.Threading
;
{ TMesajGoster }
class function TMesaj.Goster(aOwner: TComponent; aMesaj: string; aBeklemeSuresi: Integer; aBasliksiz: Boolean): TMesaj;
begin
Result := TMesaj.Create(aOwner);
with Result do
begin
SetMesaj(aMesaj);
SetBasliksiz(aBasliksiz);
SetBeklemeSuresi(aBeklemeSuresi);
Show;
Application.ProcessMessages;
end;
end;
procedure TMesaj.SetBasliksiz(const Value: Boolean);
begin
FBasliksiz := Value;
case FBasliksiz of
True : BorderStyle := bsNone;
False : BorderStyle := bsDialog;
end;
end;
procedure TMesaj.SetMesaj(const Value: string);
begin
lbMesaj.Caption := Value;
end;
procedure TMesaj.SetBeklemeSuresi(const Value: Integer);
begin
FBeklemeSuresi := Value;
FBeklemeSayac := FBeklemeSuresi;
OtomatikKapat.Interval := 1000;
OtomatikKapat.Enabled := (Value > 0); // Sıfırdan büyük ise Timer'i etkinleştiriyoruz.
lbSayac.Caption := FBeklemeSayac.ToString;
end;
procedure TMesaj.OtomatikKapatTimer(Sender: TObject);
begin
FBeklemeSayac := FBeklemeSayac - 1;
lbSayac.Caption := FBeklemeSayac.ToString;
if (FBeklemeSayac <= 0) then Close;
end;
procedure TMesaj.imCloseClick(Sender: TObject);
begin
Close;
end;
procedure TMesaj.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
end.
DFM Dosyası şu şekilde;
object Mesaj: TMesaj
Left = 0
Top = 0
BorderIcons = []
BorderStyle = bsDialog
Caption = 'Mesaj'
ClientHeight = 153
ClientWidth = 507
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
FormStyle = fsStayOnTop
OldCreateOrder = False
Position = poMainFormCenter
OnClose = FormClose
PixelsPerInch = 96
TextHeight = 13
object pnGenel: TPanel
Left = 0
Top = 0
Width = 507
Height = 153
Align = alClient
Padding.Left = 2
Padding.Top = 2
Padding.Right = 2
Padding.Bottom = 2
TabOrder = 0
ExplicitTop = 4
object Logo: TImage
AlignWithMargins = True
Left = 13
Top = 13
Width = 34
Height = 34
Margins.Left = 10
Margins.Top = 10
Margins.Right = 10
Margins.Bottom = 10
Align = alLeft
AutoSize = True
Center = True
Constraints.MaxHeight = 34
Constraints.MaxWidth = 34
Constraints.MinHeight = 34
Constraints.MinWidth = 34
Picture.Data = {
0B546478504E47496D61676589504E470D0A1A0A0000000D4948445200000020
000000200806000000737A7AF40000001974455874536F667477617265004164
6F626520496D616765526561647971C9653C0000001B744558745469746C6500
5761726E696E673B4E6F74696669636174696F6E3BB6E779860000049E494441
54785EED94794CD37718C6B7653AC45DC9FE59B66CF18F89324427E31045C298
3B5C9685C503C7C47901634303988906141430A3188E5105B103741C010B4839
46E528542BB08A481139047518CA515A282D679167DFF797C589A2CE49354B6C
F2499E3CEFFBE57979DFB4CF0178AA3CFBFC7F91C539BD517BCC793F6377E961
07D3279DFF82FCA8F3F1F63307D1F6FB3E30CD27EF49853F5FC27358511BEF3C
61D05D8541D70AD2E451CDE8E9D1DE8B4D6BE29C9A6ECAE230AE9673749C8DC1
1F7CA766BECF92B946FFEFCF45AD8CB822DC09C38002633D950437C415A10F58
2DCAA85B1087D9DB55473B1A467A6A31D625C178AF8C60BA02C34A19586DA238
D4DED12843446EB5303DCB7368BC2189C1586F3546FB5B202911119C1E65435C
2FE3E15CE4CA56BEF7E297677CF592F0E5118A746F18FA9B31DA2D43B22001CB
9C3610A4396F4C5909459A37586FEC8C6EA120C8D64E7A68B961B8A71EC31D45
185156209E1F035BC7F51C094762396FF88608FA0E0958EF447EA0CD47333244
88ABD99CB290658D6D67781853D561A82D13237F1623EFD409583BAC25489347
35364401AE1685A1FC807D1B7FFBA2571E7BF5C58136E11793B6C1A0BB097D4B
06230D43EDB9904BF360B5FC6B82347954E37A86D9301793B7431C64F3783F50
423F2BEB9240DBF1A1CE3AB6DE22E81A5338F44D69E86C966289DD570469F2FE
A9B7A4437F5D0CF6F656B6BFD5C7FFE914BBBE986752F4D3878AE6BC83185337
41DB701C5A45E26D46BBE5B05AF625417A4A8D7A752D9968CEDD8FE2DDD6D762
DDCD5F7DE4D5E7F92E0DAF3EB2915BFDE0E51468EB8E4C61E466253EFD7C0D41
9ABCA9D41F83BE35073547DD21F2B38A7FA4536478595A17FA2E1D1F6815B375
0AA1A90AC7C085280CD4C6DE467FF53442020308D277D6A897DE3042A1A91380
FDADC92CEFC5ABFED5297C57BD6B72FAC7258A4B277762A4B31AAA727FA84A7D
197EE89304402DDD078D2C14DA4B020CB517328AA0AD17904735EAE17AB93765
FED09C0F47FD096F887C3EB811ED6AF6DA43579FE9B92854CA7361E1552C280C
BDE21FEE415D1984868A9370FBD6036E6E1EA4C99BB69706E997C7401AE98253
5E96890F3C45CA26F3A5D99E96E3AADA340CD6A7A0A7D0635A066AE3E1E3E589
F7AD5613A4C9BB6FBFAAD41F7D3571C8F1B49C4CDD6CF1D9B4A7D8E5FCCEECCC
2D1675F2444F76D30274177D8F2ED177D3A23E1F81D0BD3B306F813DC7C13D3B
C8A3DAF4E46F814AB21717051E38B57551C76197F75EBF67F5A91B1786941F58
CDC20BD157190C65AEDB7DE9CADF064D431612780104A7BB0AB63DF88D6833D4
E70EA12CD819E9EEE682BB4FF16286BB797B47F92F186C4845DFD970287336A0
53B8EEFE64BBA2B76C0F419ABC87D29DEF816BA2BDA02C9639EBCE016627BB9A
955445AD43BFFC283435B150571D865AF63387A63A8AF307EA92A055FC86C1C6
2CE89A73A16BCAC1E01521B49733A0AD3F89FE0BF1E0DECA78505504A3B73400
3D625F74177841797A1394D96E90867D82A4F566C52CF3A53B0798B573C55B8E
BFAE9DDF94FECD8249068CC4A460CDFC86EDB66FDADCBD01BAC75CC6DB8C850C
0B23B1F0EF0CD3E9BE8E64CC66CC312226943125FCD907C053E52F6A6A3577F3
F307D50000000049454E44AE426082}
ExplicitLeft = 0
ExplicitTop = 23
end
object Panel1: TPanel
Left = 57
Top = 3
Width = 447
Height = 147
Align = alClient
BevelOuter = bvLowered
Padding.Left = 2
Padding.Top = 2
Padding.Right = 2
Padding.Bottom = 2
TabOrder = 0
ExplicitLeft = 11
ExplicitTop = 11
ExplicitWidth = 449
ExplicitHeight = 102
object lbMesaj: TLabel
Left = 3
Top = 3
Width = 423
Height = 106
Align = alClient
Alignment = taCenter
AutoSize = False
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
Layout = tlCenter
WordWrap = True
ExplicitTop = 1
ExplicitWidth = 427
ExplicitHeight = 110
end
object imClose: TImage
Left = 426
Top = 3
Width = 18
Height = 18
Align = alRight
Center = True
Constraints.MaxHeight = 18
Constraints.MaxWidth = 18
Constraints.MinHeight = 17
Constraints.MinWidth = 18
Picture.Data = {
0B546478504E47496D61676589504E470D0A1A0A0000000D4948445200000010
0000001008060000001FF3FF610000001D744558745469746C6500436C6F7365
3B457869743B426172733B526962626F6E3B4603B9E8000002AD49444154785E
85934B4C546714C77FF732320C041DC2237644C368F109868D98A0290BDA60E2
DE9526921856C3C2A08C2E1AA336A64DB48D81A8892D6E241A7CA20B15302618
49DA4D47596818082F0151180698B973DFB7773EB1333BEE97FFCD3927DFF97D
E77B1CE9E3AF17293FF3B30C48426B7D9939765A1290337AE1DC4B8F2CD73B0E
802306C24CEB9BE7ACFA620686650FECFCE55283079025DBAE2F3D5CB79A94B5
8E206692C5CF1606933DAF7F006451BA69986099A8C3C38C3C7846D791D3BCB9
7413351A151AFCADD38D8589DE7F412A3A426A388AC801D92300A689E36A2A12
25129923D8D1C9FC9387FCDDD587244BC4037BDC581B91AB97716C93F2AA6D98
9A004802A0AF28382EF19F3BFD34F4F7515852C4E2AE20FFFED10140CDC9101B
0ABD54B4FFCEAB1F7F62D3F90AB4643203589E9C469F9926B8BF8AF947DD94B5
849072246A5A43E040913F9FBC75394C3DEE2658BB9BD4F07BE2E3B35915A83A
FAA719766CCDE7C3403F43C86C6D6EC65FE8C391C0B660E8FA359203BD546EF7
A34E4C60A49C2C8066602514B4D94F98F12596150DDB721043DC84CC4A3A168F
A14FA75CA085A17D05885B30D280548AE8FB39947D8D048E3661D936DE5C99BC
5C8FB0BF3BD684527B88D1D118B6AAE22E9A5D8186954C105B50680C87503D3E
F2BDEE9E6FFD0940F9F113808FFA700BBD4FEEB2A94842D73D990A74DDC45C49
B2A37A336FDB4E5122AB8C5F6FE7CBBDDB7C763571A39D328FCEBB702BDF6F2F
C352750C4DCFBC0343750189243E3381131BE369DD018A4BD71328CE136730D7
D3CDD3CEBFD8B2A518AF99C04C030CFEDF82EBE802602C2CE22DC8676F750063
3981E2DE0C1694FAFD6C2C29419D8FA12515B06C4C43461080822B6595CF7D92
7410475A3DF9ACA6B0859FDD50C2566C7BF0ECD258A3E846200FF066B5AAB446
2B3B800628FF0122CC6063F45F96130000000049454E44AE426082}
OnClick = imCloseClick
ExplicitLeft = 380
ExplicitTop = 1
ExplicitHeight = 17
end
object pnTercih: TPanel
Left = 3
Top = 109
Width = 441
Height = 35
Align = alBottom
Padding.Left = 8
Padding.Top = 8
Padding.Right = 8
Padding.Bottom = 8
ParentBackground = False
TabOrder = 0
ExplicitLeft = 1
ExplicitTop = 115
ExplicitWidth = 449
object lbSayac: TLabel
Left = 424
Top = 9
Width = 8
Height = 17
Align = alRight
Caption = '0'
Font.Charset = DEFAULT_CHARSET
Font.Color = clHighlight
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
ExplicitLeft = 428
ExplicitHeight = 16
end
object cxBirDahaGosterMe: TCheckBox
Left = 9
Top = 9
Width = 415
Height = 17
Align = alClient
Caption =
'Bunu bana bir daha g'#246'sterme... ( Ev '#246'devi, bunu da siz yapmaya '#231 +
'al'#305#351#305'n)'
TabOrder = 0
ExplicitWidth = 419
end
end
end
end
object OtomatikKapat: TTimer
Enabled = False
OnTimer = OtomatikKapatTimer
Left = 308
Top = 42
end
end
Cvp: Kullanıcı bilgilendirme ekranı yapımı hk. - Tuğrul HELVACI - 10-04-2020 Bu linkteki gibi TTaskDialog'da kullanabilirsiniz. Çok başarılı bir component bana kalırsa. Ben TTaskDialog'u, başka bir thread içinden çalıştırıyorum; dolayısı ile ana thread'deki işler arka planda akarken dialog penceresi de ekranda olabiliyor. Cvp: Kullanıcı bilgilendirme ekranı yapımı hk. - cinarbil - 11-04-2020 [quote pid='36207' dateline='1586539576'] Bu linkteki gibi TTaskDialog'da kullanabilirsiniz. Çok başarılı bir component bana kalırsa. Ben TTaskDialog'u, başka bir thread içinden çalıştırıyorum; dolayısı ile ana thread'deki işler arka planda akarken dialog penceresi de ekranda olabiliyor. [/quote] Allah razı olsun. Deneyecegim inşaallah (10-04-2020, Saat: 17:32)uparlayan Adlı Kullanıcıdan Alıntı: Başlangıç olması açısından şöyle bir örnek karaladım, belki bir ışık tutar; Allah razı olsun Kullanıcı bilgilendirme ekranı yapımı hk. - uparlayan - 14-06-2020 Cvp: Kullanıcı bilgilendirme ekranı yapımı hk. - Bay_Y - 15-06-2020 (14-06-2020, Saat: 15:29)uparlayan Adlı Kullanıcıdan Alıntı:Örneklendirme ve bilgilendirme için çok teşekkürler uğur hocam gayet açıklayıcı ve bilgilendirici olmuş. elinize sağlık. |