الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

السلام عليكم سؤال عنProgressBar

مغلق
بدأه زكيري عبد العالي في 8 سبتمبر 2001 · 6 رد · 1,197 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخوتي لم يبقى الكثير وانهي البرنامج المتمثل في مضاد

لفيروسي sysrnj و sirc32

واشاء االله سيكون في ايديكم خلال ايام مع السورس طبعا

الا انني اتسائل كيف يمكنني ان اضع ProgressBar

تتماشى مع الوحدة المحددة a:مثلا

0% الى 50% معناه القراءة في المنتصف

مثل مايوجد في عملية التثبيت وغيرها

تقبلوا مني فائق الاخترام

كما اشكر الاخ العزيز madi على الكلام الجميل وزاده الله علما

تخياتي

دائما معكم

#2

شكرا اخي باتي .....

ياريت توضح اكتر هل تريد طريقة لزيادة البرقرس بار ,

هده طريقة للزيادة :

اكبر قيمة يصل لها

ProgressBar1.Max :=100;

اقل قيمة له

ProgressBar1.Min :=0;

ProgressBar1.Step :=10;

مقدار خطوة الزياة يعني عشر قيم كل خطوت

ProgressBar1.StepIt; امر الزيادة

وهده طريقة خرى

rogressBar1.Position := ProgressBar1.Position + 10

حيت position هو الموقع الحالي او القيمة الحالية .

متال المتال التالي يوضع عملية تقدم القراءة عندما نقوم بقراءة جدول كامل ( ماخود من مساعد دلفي )

procedure TForm1.Button1Click(Sender: TObject);

var

i: Integer;

begin

with ProgressBar1 do

begin

Min := 0;

Max := Table1.RecordCount;

Table1.First;

for i := Min to Max do

begin

Position := i;

Table1.Next;

end;

end;

end;

ارجو ان اكون وضحت المطلوب , زان قصرت في شي ارجو ان توضح لي اخي العزيز المطلوب بالتفصيل .

وشكرا .

#3

السلام عليكم

اخي العزيز madi

اشكرك علي ما قدمته لي. لكن المشكلة هي

اريد ان تتنقلProgressBar1 اليا مع قارء الاقراص الصلبة او الليينة اي مباشرة عندما يشتعل الضوء في القرص الليين مثلا

تبدأ procressbar بالزيادة وعندما ينطفئ تكون

procressba في النهاية 100%

وهكدا يالنسبة للوحدات الاخرى c: d :cd rom........

----------------------------------------------------------

بالصبر تبلغ ماتريد وبالتقى يلين لك الحديد

----------------------------------------------------------

#4

هل من منقد اني حقا في ورطة

كنت اضن انه سهل...............؟

لكن اريد الان من يساعدني اي نكتب البرنامج مع بعض

اعطيه كل التفاصيل ونتقاسم العمل

واجره على الله لاني اريد الفائدة للجميع بعد الانتهاء طبعا

#5

اخي العزيز باتي , اوالا لابد ان تحدد الطريقة التي سوف تقراء بها من القرص المطلوب , فالطريقة هي التي تحدد كل شي , و اقصد بدلك كيف ستقوم بقراءة الملفات من الاقراص , ستقوم بقرائتها ملف بملف .

وشكرا

#6

السلام عليكم

اخي madi اسف على الاطالة لانني كنت احاول بعدة طرق لعلي انجح لكن للاسف توقف عقلي

اليك البرنامج كامل

المطلوب : كيف احدد max ل ProgressBar1

اين اضع هدا

ProgressBar1.Position:=ProgressBar1.Position+5;

مع العلم انه

1-يتم قراءة كل الوحداة وتم وضعها في CheckListBox1

2-يتم منادات Procedure TForm1.FindRNJFiles اكثر من مرة دلك

حسب عدد الوحداة A: c: d:....الخ

3-هناك Procedure TForm1.FindEXEFiles

اجراء مشابه للبحث عن الملفات المصابة

4-هناك بfunction tform1.scanREG

دالةللبحث عن المفاتيح المصابة في registry

5-قواعد البيانات تحتوي

*1-key جدول دو حقل واحداسمه key ويحتوي علي كل المفاتيح القابلة للاصابة من هدا الفيروس

*2-keyvalue جدول دو 3 حقول key valeu data

كنت اريد ان اقدم لكم البرنامج جاهزا لكن تجري الرياح بما لاتشتهي السفن .

وانا ما زلت اتعلم

وفي الاخير ارجوا اني وفقت في شرح الفكرة.

تحياتي الى جميع الاخوة كما اسألهم التشجيع .................................pati

*********************************************************************************************************

private { Déclarations privées }

Procedure FindRNJFiles(Path: String);

procedure FindEXEFiles(Path: String);

function scanREG :boolean;

function buttonstat (enable:boolean):boolean;

public { Déclarations publiques }

end;

var

Form1: TForm1;

i:integer;

implementation{$R *.DFM}

//**********

function tform1.buttonstat (enable:boolean):boolean;

begin

if enable then

begin

CheckListBox1.Enabled:=false;

jetbutton1.Enabled:=false;

jetbutton2.Enabled:=true;

jetbutton3.Enabled:=false;

ListBox1.Clear;

end

else

begin

CheckListBox1.Enabled:=true;

jetbutton1.Enabled:=true;

jetbutton2.Enabled:=false;

jetbutton3.Enabled:=true;

ListBox1.Clear;

end;

end;

//********************************************************************

function tform1.scanREG;

var

Reg: TRegistry;

Val:TStringList;

n:integer;

keyvar:string;

begin

Reg:=TRegistry.Create;

try

Val:=TStringList.Create;

try

reg.RootKey:=HKEY_CLASSES_ROOT;

if reg.KeyExists('rnjfile') then reg.DeleteKey('rnjfile');

while not key.Eof do

begin

keyvar:= keyKey.AsString;

if reg.OpenKey(keyvar,false) then

begin

Reg.GetValueNames(Val);

for n:=0 to Val.Count-1 do

begin

if Reg.ReadString(Val.Strings[n])='rnjfile' then

begin

if keyvalue.FindKey([keyvar,val.Strings[n]])then

Reg.writeString(Val.Strings[n],form1.keyvalueData.AsString)

else

begin

if MessageBox( Handle, PChar('111111 '), PChar('22222'), MB_OKCANCEL + MB_DEFBUTTON1 + MB_APPLMODAL) = idok then

// JvAssociateExtension1.Associate(

end;

end;

end;

end;

key.Next;

end;

finally

Val.Free;

end;

finally

Reg.Free;

end;

end;

//********************************************************************

Procedure TForm1.FindRNJFiles(Path: String);

var

SearchRec: TSearchRec;

Found: Integer;

begin

Found := FindFirst(Path + '*.*' , faAnyFile, SearchRec);

while Found = 0 do

begin

if not (SearchRec.Attr and faDirectory = faDirectory) then

begin

if LowerCase(SearchRec.Name) = LowerCase('sysrnj.exe') then

begin

form1.ListBox1.Items.Add(path + 'sysrnj.exe' );

chdir(path);

SetFileAttributes(pchar(path+'sysrnj.exe'),FILE_ATTRIBUTE_ARCHIVE );

deletefile('sysrnj.exe');

end;

end

else

begin

if Copy(SearchRec.Name ,1, 1) '.' then

begin

FindRNJFiles(Path + SearchRec.Name + '');

MacProgressBar1.Progress:=MacProgressBar1.Progress+5;

ProgressBar1.Position:=ProgressBar1.Position+5;

end;

end;

Found := FindNext(SearchRec);

end;

FindClose(SearchRec);

end;

//********************************************************************

Procedure TForm1.FindEXEFiles(Path: String);

var

SearchRec: TSearchRec;

s,j,Found: Integer;

scanfile,x:string;

begin

Found := FindFirst(Path + '*.*' , faAnyFile, SearchRec);

while Found = 0 do

begin

if not (SearchRec.Attr and faDirectory = faDirectory) then

begin

x:=copy(SearchRec.Name,length(SearchRec.Name)-2,4);

if LowerCase(x) = LowerCase('exe') then

begin

s:=0;

for j:=1 to length(SearchRec.Name) do

begin

if SearchRec.Name[j]='.' then s:=s+1;

end;

if s>1 then

begin

scanfile:=copy(SearchRec.Name,1,length(SearchRec.Name)-4);

chdir(path);

if renamefile(SearchRec.Name,scanfile) then

ListBox1.Items.Add(path + SearchRec.Name);

{else

showmessage ('imposible de renomer');

}

end;

end;

end

else

begin

if Copy(SearchRec.Name ,1, 1) '.' then

FindEXEFiles(Path + SearchRec.Name + '');

end;

Found := FindNext(SearchRec);

end;

FindClose(SearchRec);

end;

//********************************************************************

procedure TForm1.FormCreate(Sender: TObject);

var

DriveNum: Integer;

DriveChar: Char;

DriveType: TDriveType;

DriveBits: set of 0..25;

begin

i:=0;

Integer(DriveBits) := GetLogicalDrives;

for DriveNum := 0 to 25 do

begin

if not (DriveNum in DriveBits) then Continue;

DriveChar := Char(DriveNum + Ord('a'));

DriveType := TDriveType(GetDriveType(PChar(DriveChar + ':')));

DriveChar := Upcase(DriveChar);

case DriveType of

dtFloppy: CheckListBox1.Items.Add(DriveChar+':');

dtFixed: CheckListBox1.Items.Add(DriveChar+':');

dtCDROM: CheckListBox1.Items.Add(DriveChar+':');

dtRAM: CheckListBox1.Items.Add(DriveChar+':');

end;

end;

end;

procedure TForm1.JetButton3Click(Sender: TObject);

begin

edit1.text:=CheckListBox1.Items.Text;

for i:=0 to CheckListBox1.Items.Count-1 do

CheckListBox1.Checked:=true;

end;

procedure TForm1.CheckListBox1Click(Sender: TObject);

begin

edit1.Clear;

for i:=0 to CheckListBox1.Items.Count-1 do

if CheckListBox1.Checkedthen edit1.text:=edit1.text+CheckListBox1.Items.Strings;

end;

procedure TForm1.JetButton1Click(Sender: TObject);

var

y:integer;

begin

buttonstat(true);

if (edit1.text'a:') or (edit1.text'b:') then scanREG;

if CheckListBox1.Checked[0] then

begin

FindRNJFiles('a:');

FindEXEFiles('a:');

end;

for y:=1 to CheckListBox1.Items.Count-1 do

begin

if CheckListBox1.Checked[y] and (CheckListBox1.Items.Strings[y]'b:')then

begin

FindRNJFiles (CheckListBox1.Items.Strings[y]+'');

FindEXEFiles (CheckListBox1.Items.Strings[y]+'');

end;

end;

CheckListBox1.Enabled:=true;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

var

Reg: TRegistry;

begin

Reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_CLASSES_ROOT;

if reg.KeyExists('rnjfile') then

begin

timer1.Enabled:=false;

if MessageBox( Handle, PChar('دخول فيروس الى الجهاز #13 سيتم تفحص كافة الوحداة'), PChar('تنبيه'), MB_OK+ MB_DEFBUTTON1 +MB_RIGHT +MB_APPLMODAL) = idok then

begin

CoolTrayIcon1.ShowMainForm;

JetButton3Click(Sender);

JetButton1Click(Sender);

timer1.Enabled:=true;

end;

end;

finally

Reg.Free;

end;

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

timer1.Enabled:=true;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

application.Terminate;

end;

procedure TForm1.hsd1Click(Sender: TObject);

begin

CoolTrayIcon1.ShowMainForm;

end;

procedure TForm1.sjldh1Click(Sender: TObject);

begin

CoolTrayIcon1.HideMainForm;

end;

procedure TForm1.CoolTrayIcon1Click(Sender: TObject);

begin

CoolTrayIcon1.ShowMainForm;

end;

procedure TForm1.JetButton4Click(Sender: TObject);

begin

CoolTrayIcon1.HideMainForm;

end;

procedure TForm1.JetButton2Click(Sender: TObject);

begin

buttonstat(false);

end;

end.

#7

اخي العزيز باتي , و الله الامر معقد بهده الطريقة , ياريت تبعتلي البرنامج على الايمايل لكي استطيع تتبعه بطريقة افضل .

و اضع وصلة له حتى يتسنى للاخرين مشاركتنا .

او اشرح لي كل المكونات التي وضعتها على الفورم لكي اقوم بانتاج برنامج شبيه بالبرنامج الموجود لديك , او قم بازالةالكائنات الزائدة من الفورم تم قم بكتابة البرنامج كاملا لا تنقص منه شي , يعني من بداية الكود الى نهايته حتى اعرف الكائنات التي وضعتها على الفورم .

ma_d_i@yahoo.com

وشكرا

هذا الموضوع مغلق.

مواضيع مشابهة