هر سوالی راجع به دلفی داری بپرس (استاد دلفی)

younes-varfan

New Member
برنامه نوشتم در دلفی که بانک اطلاعاتی ام SQLServer 2000 است با ADO کانکت می شوم برنامه که Query های که درطرف سرور اجرا می کند کش هایش در طرف سرور بعداز اتمام Query حذف نمی شود و موجب کندی شبکه و SQL Server می شود لطفا راهنمایی کنید چکار کنم که بعداز اتمام Query دیتا ست نیز از حافظه سرور حذف شود
 

farhad110

Member
سلام.
وقتي براي بعضي از دكمه ها (مثل دكمه درج و حذف) توي رويداد onclick اونا ميگي كه يه فرم ديگه رو باز كنه ( براي تأييد عمل درج يا حذف) و اون فرم دوتا دكمه ok و cancel داشته باشه، چطوري ميشه از اين فرم براي چند تا دكمه توي فرمهاي مختلف استفاده كرد؟ توي رويداد onclick اون دو تا دكمه چي بايد نوشت ؟ فكر ميكنم بايد يه شرط براش گذاشت كه اگه form1 باز بود datamodule.adotable1.post و اگه يه فرم ديگه باز بود طبق اون فرم عمل كنه. ولي نميدونم چطوري كدشو بايد نوشت.
اميدوارم منظورمو رسونده باشم. ممنون ميشم راهنماييم كنيد.

بايد هنگام نمايش فرم پارامترهايي رو هم براي ارسال مقدار دهي كنيد. مثلا نام جدول - نام فيلد و ...
 

farhad110

Member
برنامه نوشتم در دلفی که بانک اطلاعاتی ام SQLServer 2000 است با ADO کانکت می شوم برنامه که Query های که درطرف سرور اجرا می کند کش هایش در طرف سرور بعداز اتمام Query حذف نمی شود و موجب کندی شبکه و SQL Server می شود لطفا راهنمایی کنید چکار کنم که بعداز اتمام Query دیتا ست نیز از حافظه سرور حذف شود

بعد از اتمام كار با query متد close رو فراخواني ميكنيد؟
 

m_z

New Member
نويسنده: farhad110
بايد هنگام نمايش فرم پارامترهايي رو هم براي ارسال مقدار دهي كنيد. مثلا نام جدول - نام فيلد و ...
سلام. ميشه واضحتر توضيح بديد. اگه ممكنه كدش رو برام بنويسيد. متوجه منظورتون نشدم.
 
آخرین ویرایش:

farhad110

Member
سلام. ميشه واضحتر توضيح بديد. اگه ممكنه كدش رو برام بنويسيد. متوجه منظورتون نشدم.

ببينيد دوست عزيز كد خاصي رو نميشه براي اين كار قرار داد. شما فرض كنيد از دستورات sql استفاده ميكنيد. براي ويرايش جدول با استفاده از دستور update شما بايد "نام جدول" و "نام فيلدها" و "مقادير جديد" رو داشته باشيد، پس اگر اينها رو به صورت پارامتر به "فرم تاييد" ارسال كنيد، ميتونيد به جاي استفاده از فرمهاي متعدد، از يك فرم براي تمام جدولها استفاده كنيد
 
  • Like
Reactions: m_z

lordoftime

New Member
با عرض سلام . خسته نباشید ...من دفلی کار میکنم و تا حدی چند تا برنامه های خوب نوشتم .. ولی اصلاً یه برنامه ای که تو محیط شبکه باشه ننوشتم من می خواستم ازتون خواهش کنم که اگه میشه ایجاده یه برنامه (مثلاً همون دفترچه تلفن که گفتید یا ثبت نام دانشجو ) رو به صورت شماتیکی و قدم به قدم بگید تا استفاده کنیم..راستش من می خوام تو یه کامپیوتر این برنامه رو اجرا کنم که با نرم افزار virtual machin دو تا سیستم عامل نصب کردم .. که یکی سرور و دیگری کلاینت هستش...اگه این آموزش رو وقت داشتید به صورت کامل و همراه با سورس بدید ... خیلی ممنون میشم...با تشکر حافظ بگ محمدی ..منتظر آموزشهای شما دوست گرامی هستم
 

amerllica

Member
سلام
من یه مشکل دارم
به من یه پیشنهاد کنید لطفاً
من یه برنامه می خوام بنویسم که یه تابع f(x,y) بگیره و مقدار x , y رو بگیره
و عدد معادله رو بده
چه پیشنهادی برای الگوریتم به من می کنید ؟
ممنون.
 

the_king

مدیرکل انجمن
شما می توانید یک تابع برای تبدیل Infix به Postfix بنویسید تا فرمول تابع را که از ورودی می گیرید به Postfix تبدیل کنه.
سپس در یک تابعی که قراره محاسبه Postfix را انجام بده یا در همون مرحله تبدیل Infix به Postfix، متغیر x و y را با مقدار
مربوطه جایگزین کنید.
 

saalek110

Well-Known Member
با سلام.
من می خوام داخل کلیپ بورد چیزی بریزم ولی نمی خواهم محتوای کلیپ بورد کاربر که فارسی هست خراب بشه.
آیا راهی برای ذخیره کلیپ بورد در جایی هست که حالت فارسی آن بهم نخورد؟
 

farhad110

Member
سالك جان منظور شما رو دقيقا متوجه نشدم. از قبل چيزي درون كليپ بورد هست كه ميخوايد نگه داشته بشه؟ يا شما ميخواهيد متن فارسي رو به كليپ لورد انتقال بديد؟
 

saalek110

Well-Known Member
سلام فرهاد جان.
چیزی که من می خواهم درون کلیپ بورد بریزم انگلیسی است.ولی نمی خواهم محتوای فارسی که قبلا در کلیپ بورد کاربر بوده مخدوش بشه. دنبال راهی می گردم که محتوای فارسی جایی ذخیره بشه و بعد استفاده از کلیپ بورد دوباره سر جای خود برگردانده شود.
 

Sampro

Member
نصب كمپوننت در دلفي 2005

سلام
من هم سوالي مربوط به دلفي 2005 داشتم
قبلا تو دلفي 7 به راحتي مي تونستم كمپوننت ها رو نصب كنم .
كمپوننت هايي كه ممكنه فقط يه فايل Pas بوده باشند
در دلفي 2005 من گزينه هايي كه قبلا براي نصب كمپوننت در دلفي 7 وجود داشت رو نمي بينم.
با توجه به قابليت هاي خوب دلفي 2005 دوباره به سمت همون دلفي 7 برگشتم .
حالا با اين اوصاف چه طوري ميشه در دلفي 2005 كمپوننت ها رو نصب كرد .
 

MnavidM

Active Member
سلام
من هم سوالي مربوط به دلفي 2005 داشتم
قبلا تو دلفي 7 به راحتي مي تونستم كمپوننت ها رو نصب كنم .
كمپوننت هايي كه ممكنه فقط يه فايل Pas بوده باشند
در دلفي 2005 من گزينه هايي كه قبلا براي نصب كمپوننت در دلفي 7 وجود داشت رو نمي بينم.
با توجه به قابليت هاي خوب دلفي 2005 دوباره به سمت همون دلفي 7 برگشتم .
حالا با اين اوصاف چه طوري ميشه در دلفي 2005 كمپوننت ها رو نصب كرد .
این و این رو ببین.

FLan!
 

saalek110

Well-Known Member
چیزی که من می خواهم درون کلیپ بورد بریزم انگلیسی است.ولی نمی خواهم محتوای فارسی که قبلا در کلیپ بورد کاربر بوده مخدوش بشه. دنبال راهی می گردم که محتوای فارسی جایی ذخیره بشه و بعد استفاده از کلیپ بورد دوباره سر جای خود برگردانده شود.

در کلیب برد حالت های مختلفی رو میشه ذخیره کرده که ساده ترین یه متن ساده هست.
سالک جان این 3 نمونه رو نگاه کن، اگه قضیه حل نشد، بگو:

1- http://delphi.about.com/od/vclusing/a/tclipboard.htm
2- http://delphi.about.com/od/windowssh...pboard_spy.htm
3 - http://www.swissdelphicenter.ch/torr...ode.php?id=739

ممنون از توجه دوستان.
ممنون آقا نوید.
مشکلم حل شد.

جواب را قرار می دهم تا دیگران هم استفاده کنند.
ابتدا clipbrd را uses کنید.
بعد 3 باتون به فرم بیافزایید.
دکمه اولی برای ذخیره محتوای کلیپ برد در فایل است.
دکمه دوم برای دستکاری فرضی کلیب بورد .
دکمه سوم برای بازیابی کلیب بورد.
کد:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,clipbrd, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
  procedure CopyStreamToClipboard(fmt: Cardinal; S: TStream);
var
  hMem: THandle;
  pMem: Pointer;
begin
  Assert(Assigned(S));
  S.Position := 0;
  hMem       := GlobalAlloc(GHND or GMEM_DDESHARE, S.Size);
  if hMem <> 0 then
  begin
    pMem := GlobalLock(hMem);
    if pMem <> nil then
    begin
      try
        S.Read(pMem^, S.Size);
        S.Position := 0;
      finally
        GlobalUnlock(hMem);
      end;
      Clipboard.Open;
      try
        Clipboard.SetAsHandle(fmt, hMem);
      finally
        Clipboard.Close;
      end;
    end { If }
    else
    begin
      GlobalFree(hMem);
      OutOfMemoryError;
    end;
  end { If }
  else
    OutOfMemoryError;
end; { CopyStreamToClipboard }

procedure CopyStreamFromClipboard(fmt: Cardinal; S: TStream);
var
  hMem: THandle;
  pMem: Pointer;
begin
  Assert(Assigned(S));
  hMem := Clipboard.GetAsHandle(fmt);
  if hMem <> 0 then
  begin
    pMem := GlobalLock(hMem);
    if pMem <> nil then
    begin
      try
        S.Write(pMem^, GlobalSize(hMem));
        S.Position := 0;
      finally
        GlobalUnlock(hMem);
      end;
    end { If }
    else
      raise Exception.Create('CopyStreamFromClipboard: could not lock global handle ' +
        'obtained from clipboard!');
  end; { If }
end; { CopyStreamFromClipboard }

procedure SaveClipboardFormat(fmt: Word; writer: TWriter);
var
  fmtname: array[0..128] of Char;
  ms: TMemoryStream;
begin
  Assert(Assigned(writer));
  if 0 = GetClipboardFormatName(fmt, fmtname, SizeOf(fmtname)) then
    fmtname[0] := #0;
  ms := TMemoryStream.Create;
  try
    CopyStreamFromClipboard(fmt, ms);
    if ms.Size > 0 then
    begin
      writer.WriteInteger(fmt);
      writer.WriteString(fmtname);
      writer.WriteInteger(ms.Size);
      writer.Write(ms.Memory^, ms.Size);
    end; { If }
  finally
    ms.Free
  end; { Finally }
end; { SaveClipboardFormat }

procedure LoadClipboardFormat(reader: TReader);
var
  fmt: Integer;
  fmtname: string;
  Size: Integer;
  ms: TMemoryStream;
begin
  Assert(Assigned(reader));
  fmt     := reader.ReadInteger;
  fmtname := reader.ReadString;
  Size    := reader.ReadInteger;
  ms      := TMemoryStream.Create;
  try
    ms.Size := Size;
    reader.Read(ms.memory^, Size);
    if Length(fmtname) > 0 then
      fmt := RegisterCLipboardFormat(PChar(fmtname));
    if fmt <> 0 then
      CopyStreamToClipboard(fmt, ms);
  finally
    ms.Free;
  end; { Finally }
end; { LoadClipboardFormat }

procedure SaveClipboard(S: TStream);
var
  writer: TWriter;
  i: Integer;
begin
  Assert(Assigned(S));
  writer := TWriter.Create(S, 4096);
  try
    Clipboard.Open;
    try
      writer.WriteListBegin;
      for i := 0 to Clipboard.formatcount - 1 do
        SaveClipboardFormat(Clipboard.Formats[i], writer);
      writer.WriteListEnd;
    finally
      Clipboard.Close;
    end; { Finally }
  finally
    writer.Free
  end; { Finally }
end; { SaveClipboard }

procedure LoadClipboard(S: TStream);
var
  reader: TReader;
begin
  Assert(Assigned(S));
  reader := TReader.Create(S, 4096);
  try
    Clipboard.Open;
    try
      clipboard.Clear;
      reader.ReadListBegin;
      while not reader.EndOfList do
        LoadClipboardFormat(reader);
      reader.ReadListEnd;
    finally
      Clipboard.Close;
    end; { Finally }
  finally
    reader.Free
  end; { Finally }
end; { LoadClipboard }



// Examples:

{ Save Clipboard }

procedure TForm1.Button1Click(Sender: TObject);
var
  ms: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  try
    SaveClipboard(ms);
    ms.SaveToFile('c:\ClipBrdSaved.dat');
  finally
    ms.Free;
  end; { Finally }
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
clipboard.Clear;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  fs: TfileStream;
begin
  fs := TFilestream.Create('c:\ClipBrdSaved.dat',
    fmopenread or fmsharedenynone);
  try
    LoadClipboard(fs);
  finally
    fs.Free;
  end; { Finally }
   end;
end.
منبع:
http://www.swissdelphicenter.ch/torry/showcode.php?id=945
 

parvaz64

New Member
با سلام من با​
Rave report يك گزارش از طريق ado ساختم و حالا ميخوام اونو به دلفي وصلش كنم .
تو دلفي يك
dbgrid دارم و از طريق Adoquery اون رو به بانك اكسس وصل كردم .لطفا بهم بگيد چطور مي تونم از دلفي گزارشم رو ببينم.

دلفي من نسخه 10 هستش.
 

uaeeslami

New Member
چطور می شود در قسمت Database Desktop دلفی فارسی تایپ کرد با توجه به اینکه از فارسی ساز مریم استفاده کردم ولی موفق نشدم و همچنین فونت را tahoma کردم و خصوصیت charset را بروی arabic گذاشتم و همچنین برای اینکه فونت فارسی در تمامی قسمتها اعمال شود در کنترل پنل و در بخش regional and language در تب advanced زبان را فارسی انتخاب کنید ولی باز هم امکان تایپ فارسی ندارد لطفا کمک کنید؟
 

farhad110

Member
چطور می شود در قسمت Database Desktop دلفی فارسی تایپ کرد با توجه به اینکه از فارسی ساز مریم استفاده کردم ولی موفق نشدم و همچنین فونت را tahoma کردم و خصوصیت charset را بروی arabic گذاشتم و همچنین برای اینکه فونت فارسی در تمامی قسمتها اعمال شود در کنترل پنل و در بخش regional and language در تب advanced زبان را فارسی انتخاب کنید ولی باز هم امکان تایپ فارسی ندارد لطفا کمک کنید؟

سلام دوست عزيز. خوش آمديد.
اسامي فيلدها رو ميخوايد فارسي تايپ كنيد يا مقدار اونها رو؟
به هر حال اولي رو اكيدا ممنوع اعلام مي كنم و دومي رو هم بوسيله فرم هاي دلفي پيشنهاد مي كنم!
 

uaeeslami

New Member
سلام می خواستم بپرسم چطوری می شه که پروژه دلفی را در کامپیوتر دیگری اجراکر بدون نیاز به دلفی با تشکر.
 

جدیدترین ارسال ها

بالا