How to detect the presence of a 'pdf' reader?

Does anybody know how to programmatically detect the presence of a 'pdf' 
reader on a user's computer using Delphi?

We were thinking of searching for the presence of an Acrobat Reader 
executable but this method would exclude people using a different reader.

We also were thinking of searching the Registry for the '.pdf' key. But does 
its presence guarantee the presence of a reader?
0
John
3/10/2009 8:24:38 PM
embarcadero.delphi.win32 2183 articles. 0 followers. Follow

17 Replies
1645 Views

Similar Articles

[PageSpeed] 56

On Tue, 10 Mar 2009 13:24:38 -0700, John Smith wrote:

> We also were thinking of searching the Registry for the '.pdf' key. But does 
> its presence guarantee the presence of a reader?

It implies that there was once one (or a pdf editor or something else
that has a pdf extension), it doesn't guarantee that it still is, you
could follow the registry keys through and check if the file exists.

-- 
Marc Rohloff [TeamB]
marc -at- marc rohloff -dot- com
0
Marc
3/10/2009 9:37:59 PM
> Does anybody know how to programmatically detect the presence of a 'pdf' 
> reader on a user's computer using Delphi?
>
> We were thinking of searching for the presence of an Acrobat Reader 
> executable but this method would exclude people using a different reader.
>
> We also were thinking of searching the Registry for the '.pdf' key. But 
> does its presence guarantee the presence of a reader?

It is pretty much a given than there will be something on every PC
for reading PDF files. Why not just call ShellExecute on the PDF file,
and let windows figure out which program to open?

cheers,

Chris
0
Chris
3/10/2009 9:47:18 PM
"Marc Rohloff" <marc@nospam.marcrohloff.com> wrote in message 
news:91062@forums.codegear.com...
> On Tue, 10 Mar 2009 13:24:38 -0700, John Smith wrote:
>
>> We also were thinking of searching the Registry for the '.pdf' key. But 
>> does
>> its presence guarantee the presence of a reader?
>
> It implies that there was once one (or a pdf editor or something else
> that has a pdf extension), it doesn't guarantee that it still is, you
> could follow the registry keys through and check if the file exists.
>

Thanks. I'll do just that.

> -- 
> Marc Rohloff [TeamB]
> marc -at- marc rohloff -dot- com
0
John
3/10/2009 10:36:47 PM
"Chris Morgan" <chrisXXX at lynxinfo.co.uk> wrote in message 
news:91064@forums.codegear.com...
>> Does anybody know how to programmatically detect the presence of a 'pdf' 
>> reader on a user's computer using Delphi?
>>
>> We were thinking of searching for the presence of an Acrobat Reader 
>> executable but this method would exclude people using a different reader.
>>
>> We also were thinking of searching the Registry for the '.pdf' key. But 
>> does its presence guarantee the presence of a reader?
>
> It is pretty much a given than there will be something on every PC
> for reading PDF files. Why not just call ShellExecute on the PDF file,
> and let windows figure out which program to open?
>

I agree but it's not my call. The boss wants the user to be forewarned if 
the 'pdf' reader is missing.

> cheers,
>
> Chris
0
John
3/10/2009 10:37:36 PM
"John Smith" <jbrown@nomail.com> wrote in message 
news:91078@forums.codegear.com...

> I agree but it's not my call. The boss wants the user to be
> forewarned if the 'pdf' reader is missing.

ShellExecute() will return an error code that you can check for if a 
suitable reader could not be started.

-- 
Remy Lebeau (TeamB)
0
Remy
3/11/2009 12:07:06 AM
John Smith wrote:
> Does anybody know how to programmatically detect the presence of a 'pdf' 
> reader on a user's computer using Delphi?
> 
> We were thinking of searching for the presence of an Acrobat Reader 
> executable but this method would exclude people using a different reader.
> 
> We also were thinking of searching the Registry for the '.pdf' key. But does 
> its presence guarantee the presence of a reader?


There is the FindExecutable API function.

See example at:
http://www.swissdelphicenter.ch/torry/showcode.php?id=103


-- 
Michael Justin
SCJP, SCJA
betasoft - Software for Delphi™ and for the Java™ platform
http://www.mikejustin.com - http://www.betabeans.de
0
Michael
3/11/2009 5:49:33 AM
On Tue, 10 Mar 2009 22:49:33 -0700, Michael Justin wrote:

> There is the FindExecutable API function.
> 
> See example at:
> http://www.swissdelphicenter.ch/torry/showcode.php?id=103

You could also call ExtractIconEx which is a bit of a hack but would
check if the file exists.

-- 
Marc Rohloff [TeamB]
marc -at- marc rohloff -dot- com
0
Marc
3/11/2009 12:25:45 PM
> Does anybody know how to programmatically detect the presence of a 'pdf' 
> reader on a user's computer using Delphi?
>
> We were thinking of searching for the presence of an Acrobat Reader 
> executable but this method would exclude people using a different reader.
>
> We also were thinking of searching the Registry for the '.pdf' key. But 
> does its presence guarantee the presence of a reader?

You can also do this:

function IsPDFReaderAvail: Boolean;
var
  RegKey: TRegistry;
  AssocAppInfo: string;
  Extension, ExtractPath, ExtractFN: String;
begin
  Result := False;
  Extension := '.pdf';
  try
    RegKey := TRegistry.Create(KEY_QUERY_VALUE);
  except
    Exit;
  end;

  RegKey.RootKey := HKEY_CLASSES_ROOT;
  if RegKey.OpenKeyReadOnly(Extension) then
  begin {extension key exists?}
    try
      AssocAppInfo := RegKey.ReadString(''); {read app key}
      RegKey.CloseKey;
    except
      RegKey.Free;
      Exit;
    end;
  end;
  if ((AssocAppInfo <> '') and (RegKey.OpenKeyReadOnly(AssocAppInfo + 
'\Shell\Open\Command'))) then
  begin
    try
      ExtractPath     := Trim(StringReplace(RegKey.ReadString(''), '"', '', 
[rfReplaceAll]));
      ExtractFN       := Trim(StringReplace(ExtractPath, '%1', '', 
[rfReplaceAll]));
      ExtractPath     := ExtractFilePath(ExtractPath);
      ExtractFN       := ExtractFileName(ExtractFN);
      Result          := FileExists(ExtractPath + ExtractFN);
      RegKey.CloseKey;
    except
      RegKey.Free;
      Exit;
    end;
  end;
end;
0
Eddie
3/11/2009 2:40:34 PM
Following is the sample code in [VB.NET]
 
'--Declaration
Public Declare Auto Function FindExecutable Lib "shell32.dll" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Int32
 
'--
Dim intRetval As Integer = FindExecutable(PDF FILE FULL PATH NAME, "", "")

If intRetval  < =  32

 MessageBox.Show("The Adobe Reader, which is required to view this file, may not be correctly installed.", "Adobe Reader Not found", MessageBoxButtons.OK,    MessageBoxIcon.Exclamation)

End if

For more information  [http://www.mindfiresolutions.com/FindExecutable-API-569.php]
0
Eliza
5/7/2010 8:55:17 AM
<Eliza Sahoo> wrote in message news:240304@forums.embarcadero.com...
> Following is the sample code in [VB.NET]

FindExecutable() is a Win32 API function, and as such works exactly the same 
way in Delphi, ie:

{code:delphi}
uses
  ..., ShellAPI;

var
  intRetval: Integer;
begin
  intRetval := FindExecutable(PChar(PDF FILE FULL PATH NAME), '', '');
  if intRetval  <= 32 then
    Application.MessageBox('The Adobe Reader, which is required to view this 
file, may not be correctly installed.', 'Adobe Reader Not found', MB_OK or 
MB_ICONEXCLAMATION);
end;
{code}

-- 
Remy Lebeau (TeamB)
0
Remy
5/7/2010 10:36:19 PM
Eliza Sahoo wrote:
> Following is the sample code in [VB.NET]
>  
> '--Declaration
> Public Declare Auto Function FindExecutable Lib "shell32.dll" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Int32
>  
> '--
> Dim intRetval As Integer = FindExecutable(PDF FILE FULL PATH NAME, "", "")
> 
> If intRetval  < =  32
> 
>  MessageBox.Show("The Adobe Reader, which is required to view this file, may not be correctly installed.", "Adobe Reader Not found", MessageBoxButtons.OK,    MessageBoxIcon.Exclamation)
> 
> End if
> 
> For more information  [http://www.mindfiresolutions.com/FindExecutable-API-569.php]

If that were on my box, it would be wrong because I don't use Adobe for a PDF reader.....
Mike
0
Mike
5/8/2010 9:56:18 AM
> If that were on my box, it would be wrong because I don't use Adobe
> for a PDF reader.....  Mike

Not really (and this is coming from a Foxit user...). The only Adobe
Reader-specific thing is the message box text, which only gets shown
when there's no associated EXE for PDF files at all.
0
Chris
5/8/2010 12:08:38 PM
Chris Rolliston wrote:
>> If that were on my box, it would be wrong because I don't use Adobe
>> for a PDF reader.....  Mike
> 
> Not really (and this is coming from a Foxit user...). The only Adobe
> Reader-specific thing is the message box text, which only gets shown
> when there's no associated EXE for PDF files at all.

Yep, that's what I meant.
0
Mike
5/9/2010 10:07:31 AM
> {quote:title=John Smith wrote:}{quote}
> Does anybody know how to programmatically detect the presence of a 'pdf' 
> reader on a user's computer using Delphi?
> 
> We were thinking of searching for the presence of an Acrobat Reader 
> executable but this method would exclude people using a different reader.
> 
> We also were thinking of searching the Registry for the '.pdf' key. But does 
> its presence guarantee the presence of a reader?

function IsAppOnBoard(const FileExt:string):String;

  function CleanOpenCmd(Cmd:String):String;
    var
      i, j:integer;
    begin
      result:='';
      for i:=1 to length(Cmd) do
        begin
          for j:=i to length(Cmd) do
            begin
              result:=result+Cmd[j];
              if FileExists(Result) then
                begin
                  exit;
                end;
            end;
          result:='';
        end;
    end;

var
  Reg : TRegistry;
  tmp,
  sKey : string;
  AccessMode : Cardinal;
begin
  Result:='';

  sKey := '\Shell\Open\Command';
  AccessMode := GetRegAccessMode(sKey);

  Reg:=TRegistry.Create(AccessMode);

    try
       Reg.RootKey:=HKEY_CLASSES_ROOT;

         if Reg.OpenKeyReadOnly(FileExt) then
          begin
            tmp:=Reg.ReadString('');
            Reg.CloseKey;
                if Reg.OpenKeyReadOnly(tmp+sKey) then
                  begin
                    tmp:=Reg.ReadString('');
                    Reg.CloseKey;
                    Result:=CleanOpenCmd(tmp);
                  end;
          end;
    finally
      Reg.Free;
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  showmessage(IsAppOnBoard('.pdf'));
end;


Will work also:

IsAppOnBoard('.doc')
IsAppOnBoard('.zip')

and so on
 


All the best

Axel

Edited by: Alexander Lang on May 10, 2010 10:41 AM
0
Alexander
5/10/2010 5:42:47 PM
<Alexander Lang> wrote in message news:241189@forums.embarcadero.com...

>  function CleanOpenCmd(Cmd:String):String;

The default verb for any file type is not always "open".  You have to read 
the Registry to see if there is an overriding verb, and then fallback to 
"open" as a last resort.

-- 
Remy Lebeau (TeamB)
0
Remy
5/10/2010 9:53:43 PM
Alexander Lang wrote:
> John Smith wrote:
>> Does anybody know how to programmatically detect the presence of a 'pdf' 
>> reader on a user's computer using Delphi?
>>
>> We were thinking of searching for the presence of an Acrobat Reader 
>> executable but this method would exclude people using a different reader.
>>
>> We also were thinking of searching the Registry for the '.pdf' key. But does 
>> its presence guarantee the presence of a reader?
> 
> function IsAppOnBoard(const FileExt:string):String;

This function's name suggests it returns a yes/no answer, not a string.

>   function CleanOpenCmd(Cmd:String):String;
>     var
>       i, j:integer;
>     begin
>       result:='';
>       for i:=1 to length(Cmd) do
>         begin
>           for j:=i to length(Cmd) do
>             begin
>               result:=result+Cmd[j];
>               if FileExists(Result) then
>                 begin
>                   exit;
>                 end;
>             end;
>           result:='';
>         end;
>     end;

If the registry value is the non-existent file name "C:\Does not 
exist\foo.exe" and there's a file in the process's current directory 
named "C", this code will return that file as the command. Is that what 
you intended?

Or, if I have a directory on my computer named "C:\Does" then this 
function will return that directory name as the command.

It likes like you meant to mimic the behavior CreateProcess uses when a 
command line isn't quoted.

-- 
Rob
0
Rob
5/11/2010 2:52:59 AM
> {quote:title=Rob Kennedy wrote:}{quote}
> Alexander Lang wrote:
> > John Smith wrote:
> >> Does anybody know how to programmatically detect the presence of a 'pdf' 
> >> reader on a user's computer using Delphi?
> >>
> >> We were thinking of searching for the presence of an Acrobat Reader 
> >> executable but this method would exclude people using a different reader.
> >>
> >> We also were thinking of searching the Registry for the '.pdf' key. But does 
> >> its presence guarantee the presence of a reader?
> > 
> > function IsAppOnBoard(const FileExt:string):String;
> 
> This function's name suggests it returns a yes/no answer, not a string.
> 
> >   function CleanOpenCmd(Cmd:String):String;
> >     var
> >       i, j:integer;
> >     begin
> >       result:='';
> >       for i:=1 to length(Cmd) do
> >         begin
> >           for j:=i to length(Cmd) do
> >             begin
> >               result:=result+Cmd[j];
> >               if FileExists(Result) then
> >                 begin
> >                   exit;
> >                 end;
> >             end;
> >           result:='';
> >         end;
> >     end;
> 
> If the registry value is the non-existent file name "C:\Does not 
> exist\foo.exe" and there's a file in the process's current directory 
> named "C", this code will return that file as the command. Is that what 
> you intended?
> 
> Or, if I have a directory on my computer named "C:\Does" then this 
> function will return that directory name as the command.
> 
> It likes like you meant to mimic the behavior CreateProcess uses when a 
> command line isn't quoted.
> 
> -- 
> Rob

Hello Rob,

ups i forget something ;-). 


Here is the unit, test it and you will see what happens.

All the best Alexander

<pre>
unit main;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
   private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

const
  KEY_WOW64_64KEY = $0100;
  KEY_WOW64_32KEY = $0200;

var
  Form1: TForm1;


implementation

uses
  Registry;

{$R *.dfm}

function IsWow64: Boolean;
type
  TIsWow64Process = function( // Type of IsWow64Process API fn
    Handle: Windows.THandle; var Res: Windows.BOOL
  ): Windows.BOOL; stdcall;
var
  IsWow64Result: Windows.BOOL;      // Result from IsWow64Process
  IsWow64Process: TIsWow64Process;  // IsWow64Process fn reference
begin
  // Try to load required function from kernel32
  IsWow64Process := Windows.GetProcAddress(
    Windows.GetModuleHandle('kernel32'), 'IsWow64Process'
  );
  if Assigned(IsWow64Process) then
  begin
    // Function is implemented: call it
    if not IsWow64Process(
      Windows.GetCurrentProcess, IsWow64Result
    ) then
      raise SysUtils.Exception.Create('IsWow64: bad process handle');
    // Return result of function
    Result := IsWow64Result;
  end
  else
    // Function not implemented: can't be running on Wow64
    Result := False;
end;

function GetRegAccessMode(sOrtID: String): Cardinal;
begin
  // 32-Bit-Windows
  if not IsWow64 then begin
    Result := KEY_ALL_ACCESS;
    exit;
  end;
  // 64-Bit-Windows
 if Pos('Wow6432Node', sOrtID) > 0 then // 32-Bit-Wert schreiben?
    begin
    result := (KEY_ALL_ACCESS OR KEY_WOW64_32KEY);
   // ShowMessage('KEY_WOW64_32KEY' +#13+sOrtID)
    end
  else
    begin
    result := (KEY_ALL_ACCESS OR KEY_WOW64_64KEY);
   // ShowMessage('KEY_WOW64_64KEY' +#13+sOrtID)
    end;
end;

// Ermittelt die Anwendung mit der standardgemäß die Dateien verknüpft sind.
function IsAppOnBoard(const FileExt:string):String;

  function CleanOpenCmd(Cmd:String):String;
    var
      i, j:integer;
    begin
      result:='';
      for i:=1 to length(Cmd) do
        begin
          for j:=i to length(Cmd) do
            begin
              result:=result+Cmd[j];
              if FileExists(Result) then
                begin
                  exit;
                end;
            end;
          result:='';
        end;
    end;

var
  Reg : TRegistry;
  tmp,
  sKey : string;
  AccessMode : Cardinal;
begin
  Result:='';
  sKey := '\Shell\Open\Command';
  AccessMode := GetRegAccessMode(sKey);

  Reg:=TRegistry.Create(AccessMode);

    try
       Reg.RootKey:=HKEY_CLASSES_ROOT;

         if Reg.OpenKeyReadOnly(FileExt) then
          begin
            tmp:=Reg.ReadString('');
            Reg.CloseKey;
                if Reg.OpenKeyReadOnly(tmp+sKey) then
                  begin
                    tmp:=Reg.ReadString('');
                    Reg.CloseKey;
                    Result:=CleanOpenCmd(tmp);
                  end;
          end;
    finally
      Reg.Free;
    end;
end;

// Beispiel
procedure TForm1.Button1Click(Sender: TObject);
begin
  // open PDF with parameters e.g. ShellExecute(),  see:
 // http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf#page=5

  showmessage(IsAppOnBoard('.pdf'));
end;

end.
</pre>

Edited by: Alexander Lang on May 14, 2010 7:07 AM
0
Alexander
5/14/2010 2:08:03 PM
Reply:

Similar Artilces:

''''''''''''''''''''
Name: haznen Email: haznenatyahoodotcom Product: Gran Paradiso Alpha 8 Summary: '''''''''''''''''''' Comments: '''''''''''''''''''''''''''''''''''' Browser Details: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 UGES/1.7.2.0 GranParadiso/3.0a1 From URL: http://www.mozilla.org/projects/granparadiso/ Note to readers: Hendrix gives...

'''''
Name: mario Email: ramar17atfastwebnetdotit Product: Gran Paradiso Alpha 2 Summary: ''''' Comments: K: Browser Details: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a2) Gecko/20070206 GranParadiso/3.0a2 ...

How to detect if the 'cancel' button on Acrobat Reader's PDF print dialog window has been clicked when using Acrobat Reader ActiveX control in Powerbuilder 9
Product name: Acrobat Reader V5.0, Powerbuilder V9 Operating System: Windows XP I have an Acrobat Reader's ActiveX control on my window application to present and print PDF files. The application was developed using Powerbuilder V9. I need to know if a user has just printed a file then save the printed date into a database. The user can click the 'Cancel' button on the print dialog window from Acrobat Reader to cancel the printing. In this case I won't update the printed date. How can I know if the user has clicked the 'Cancel' button to cancel the printing? ...

'do' won't 'do' if '/'
Greetings to All from Au, Have a NetWare Perl 5.8.4 and wanted to tweak File\Spec\NW.pm to try and standardise on '/' separators. If I run a test script (t/uni/lower.t) with an unmodified NW.pm, it calls t/uni/case.pl, that, in case.pl, (when the path separators are '\'), the $file is '..\lib\unicore\To\Lower.pl' and the following code portion works, with $simple getting a returned table: sub casetest { my ($base, $spec, $func) = @_; my $file = File::Spec->catfile(File::Spec->catdir(File::Spec->updir, "lib", &qu...

'''
Name: L Lachowsky Email: e2brutus_10atyahoodotcom Product: Firefox Summary: ''' Comments: why duddn this surprise me... I change default server from IE to Mozilla, and then i get error messages. well, shud I decide to not get on my computer with Mozilla..or shud I risk security breeches with IE....hmmm at least i can get on the internet with IE Browser Details: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 From URL: http://hendrix.mozilla.org/ Note to readers: Hendrix gives no expectation of a response to this fee...

Cast from type ''''DBNull'''' to type ''''String'''' is not valid.
How do I avoid getting this error: Cast from type ''''DBNull'''' to type ''''String'''' is not valid. I am trying to get values from the database into a form for updating using a Datareader, SQL is set to allow nulls for certain fields as they are not required but the only way I can get the form to display is by adding a space in SQL. Is there another way around this? Check if it is equal to DBNull.Value first and if it is, don't do the cast.Stanley Tan theSpoke Blog Where in the code does it need to go? I am using the following and it's the profile that isn't always requi...

table_info('','','','%') cannot return any types
I was recently confirming table_info special cases and discovered the case for getting table_types cannot work. table_info('','','','%') should return a list of table types but it returns a list of empty strings instead: my @types = $h->tables('', '', '', '%'); print "all types:\n", join("xxx\n", @types), "\n"; # should output something like: # "dbo" # "INFORMATION_SCHEMA" # "sys" # and actually outputs: xxx xxx It seems to be down to the following ...

'IN' Clause or 'OR'
Hello, [1]: select * from TABLEA where COL1 IN('value1','value2''valu3'....) [2]:select * from TABLEA where COL1 = 'value1' OR COL1= 'value2' OR COL1='valu3'. TABLEA is a huge table and it has non-clustered index on COL1. Among the above 2 queries, which query will give me the better performance or fast response and WHY? What is the difference between 'IN' and 'OR' clauses as for as Sybase Optimization is concerned. Which is the better one to be used on huge tables. Thanks. Mac An IN list is treated as a series of OR clauses. There's no diff between the two as far as the optimizer is concerned. Eric Miner Sr. engineer Optimizer Group Ma wrote: > Hello, > > [1]: select * from TABLEA where COL1 IN('value1','value2''valu3'....) > > [2]:select * from TABLEA where COL1 = 'value1' OR COL1= 'value2' OR > COL1='valu3'. > > TABLEA is a huge table and it has non-clustered index on COL1. Among the > above 2 queries, which query will give me the better performance or fast > response and WHY? > > What is the difference between 'IN' and 'OR' clauses as for as Sybase > Optimization is concerned. Which is the better one to be used on huge > tables. > > Thanks. > Mac ...

'b'..'a'
Hello. I'm using defferent 5.6.0's for Win32. I wonder wheter following behaviour is intentional or not: d:\>perl -e "print 'b'..'c'" bc d:\>perl -e "print 'b'..'a'" bcdefghijklmnopqrstuvwxyz I expected empty list in latter case, like in perl -e "print 'bb'..'a'" <!ENTITY Vadim REALLIFE "Vadim V.Konovalov, St.Petersburg, Russia"> &Vadim; On Wed, Sep 20, 2000 at 03:14:41PM +0400, Konovalov, Vadim wrote: > Hello. > > I'm using defferent 5.6.0'...

'or' or 'union'
Hello I was just wondering, in general what is better to use, an 'or' clause in a select or a 'union' to join two selects together. Do both statements create work tables? Many thanks Alex I think OR will be better than union. because suppose u have 3 tables and using OR u can join table a and table b and table c so each table will have only one read. but using union you will join table a and table b and in another query of union u will use table (a or b) and table c so ur one read is more in union . Ramdas Alex Cheung wrote: > Hello > >...

EXEC sp_msforeachtable 'sp_spaceused ''?'''
What does the following SQL code mean?  EXEC sp_msforeachtable 'sp_spaceused ''?'''Johan TheunissenMCPD, MCSE, MCTS BizTalk 2006==============================Please mark the most helpful reply/replies as "Answer". JohanNL:sp_msforeachtable This is the name of the SP that resides in the master database.  This SP executes one or more commands for a table. JohanNL:sp_spaceused This is the command that you want to run for each of the tables residing in your current database.  As you might have understood so far, that this is again a...

'To', 'CC', & 'BCC'
Name: Dick Tracy Email: philipdottracyatoptusnetdotcomdotau Product: Thunderbird Summary: 'To', 'CC', & 'BCC' Comments: I have just started using Thunderbird and while I find it quite excellent- I suggest having a button to add addressees to 'BCC' as well. Currently each 'BCC' addressee has to be selected manually. I send e-mail to quite a number of people at a time and I do not wish to readily spread others addresses easily. Browser Details: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0....

'Value' should be between 'minimum' and 'maximum'.
I'm attempting to invoke with parameters:  Dim thing2 As New mydelsubPBStep(AddressOf pbStep) Me.Invoke(thing2, "setMax", dt.Rows.Count)      <---- this is where the error occurs   the delegate looks like this: Private Delegate Sub mydelsubPBStep(ByVal mode As String, ByVal value As Integer)   the function it's calling looks like this:Private Sub pbStep(ByVal mode As String, ByVal value As Integer) Select Case mode.ToLower Case "clear" ProgressBar1.Value = 0 Case "step" ProgressBar1.PerformStep() L...

C++ Replacement or similar keywords for 'is' and 'as' Delphi keys.
hello there, i am a newcomer to C++ Builder so excuse any mistake. My question is (maybe a stupid question) My first language is Delphi and i usually use this type of sentences: if Sender is TEdit then (Sender as TEdit).Text := ''; A replacement or similar keywords exist for C++ Builder? Thanks in advance. Am 27.09.2010 13:37, schrieb finneas finn: > A replacement or similar keywords exist for C++ Builder? TEdit * Edit; if ((Edit = dynamic_cast<TEdit*>(Sender)) != 0) { Edit->Text = ""; } Christian Il Mon, 27 Sep 2010 04:37:55 -0...

DVD burner not detected as 'user' but 'root' can
There was a post in the archives that dealt with the same topic - but it never seem to reach a solution, so I will try. I have 10.3 Gnome and trying to burn an iso using K3B. As 'user' K3B can't find the drive - though a blank disk will show up on the desktop when inserted (automount?) If I log in as 'root' K3B sees the DVD drive and I can burn the iso. So why? Following the archived post I run Code: -------------------- planb:/home/stephen # resmgr dump ### begin dump class audioplayer class pda class scanner class modem class camera ...

LINQ -- how to do where x in ('a', 'b','c')
How do I write a LINQ expression that does the following: select * from SomeTable where SomeColumn in ('a', 'b','c')  Jay There is no IN operator in LINQ (yet), but you can use Contains instead: http://www.devauthority.com/blogs/jwooley/archive/2007/08/06/69922.aspx Jos...

Parameterprefix ('@', ':', '?') with MySQL (lite) over odbc
Hi! I cant get my gridview to work with a deletecommand with a parameterprefix. I use a mysql lite installation. If a change my deletecommand to a specific id that exists in the DB everything works properly but not with @original_id (or @id). Been stuck on this for ages so I really apprechiate help. Code: asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" CellPadding="5" DataSourceID="SqlDataSource1" EmptyDataText="Det finns för närvarande inga kurser att boka." ForeColor="#333333" GridLines="None" Font-Size="Small" Width="688px" Horizon...

Select where column IN ('DC123', 'WQ242', 'GT654', 'EL982', ......);
Which will be faster given that the list of IDs can be quite large (hundreds or thousands of IDs)? For count = 1 to rows ls_ID = dw_1.GetItemString(count, "id") dw_2.Retrieve(ls_id)//RetrieveStart = 2 Next OR Or modifying the select statement... select column1, column2.....where ID IN ('DC123', 'WQ242', 'GT654', 'EL982', ......); Ido you can also used an argument of the type string array with your datawindow : string ls_id[] For count = 1 to rows ls_id[count] = dw_1.GetItemString(count, "id") Next dw_2...

'NMDayTim', 'Psock' , 'NMTime' , 'NMFtp' can not be opened.
hello, my colleague have developed an application under c++ builder 5. so now i should undertake it and optimize it. last days i have installed the C++ Builder 2010 testversion to get some experience on it, because i have not used it before. when i try to compile the old project in C++ builder 2010, comes some Compile errors. Also, there are some Includes like 'NMDayTim', 'Psock' , 'NMTime' , 'NMFtp' in this old Project. they can be found and compiled in the old c++ Builder 5. but not in c++ builder 2010. so i want to know do i solve this problem or go...

'Receiver' not 'Sender'
Using TB 2.0.06 (on Win XP) How do I go about including the column 'Receiver' in the right hand pane (rather than 'Sender') under the 'Sent' folder of my mail account? Thanks kes wrote: > Using TB 2.0.06 (on Win XP) > > How do I go about including the column 'Receiver' in the right hand pane > (rather than 'Sender') under the 'Sent' folder of my mail account? > > Thanks over to the far right, above the scroll bar, there is a funny looking bent arrow, click on that, and pick the columns you want. -- ...

'returns' vs 'of'
I don't like the assignments of 'returns' and 'of'. I think it is easily confused. I've written foo (Int $x) returns Int in examples and nobody noticed. As formal documentation, that scans right as the outer perceived return value type. But no, it's supposed to be foo (Int $x) of Int instead. The returns keyword affects the implementation of the function, not the external contract. Yet, if returns is missing it uses the of value by default, but if the of is missing it does not give static type checking to the caller, rather than using the sam...

'cn' from the 'directreports'
How do I get only the "cn" for each user listed on the "direct report" ...

'srvprvCurrentDelegators' and 'srvprvCurrentDelegatees'
Hi, Value of cn in 'srvprvCurrentDelegators' and 'srvprvCurrentDelegatees' I am setting a user (mjames) as the delegatee of another user(jjames) and then jjames is made unavailable for all requests. Upon initiating this process, the users attributes 'srvprvCurrentDelegators' and 'srvprvCurrentDelegatees' has following values: srvprvCurrentDelegators cn=be62931227c24f1da36dbe0e8ce72d87,cn=DelegationD efs,cn=AppConfig,cn=UserApplication,cn=driverset1, dc=idm,dc=services,dc=system NO CHANGE IN LBrowser entry in jjames srvprvCurrentDelegatees cn=...

'ANSI_NULLS' and 'ANSI_WARNINGS'
I am getting an error that says "Heterogeneous queries require the ansi_nulls and ansi options to be set. " There are 2 articles bout this for 7.0 and 6.5. They said to add the following code: Turn OFF the 'ANSI_NULLS' and 'ANSI_WARNINGS' on MS SQL Server. or The SQL script in PowerBuilder application like: SQLCA.Autocommit = TRUE Execute Immediate "SET ANSI_NULLS ON"; Execute Immediate "SET ANSI_WARNINGS ON"; ll_rows = lds_dw.Retrieve(arg) // Any other sql statements Execute Immediate "SET ANSI_NULLS OFF"; Execu...

Web resources about - How to detect the presence of a 'pdf' reader? - embarcadero.delphi.win32

Resources last updated: 3/8/2016 9:51:31 AM