Difference between revisions of "LMD VCL - LMD Packs"

From LMD
Jump to: navigation, search
(How to serialize collections)
m (Using Paste/Copy commands at runtime)
 
(9 intermediate revisions by 3 users not shown)
Line 4: Line 4:
 
===Using Paste/Copy commands at runtime===
 
===Using Paste/Copy commands at runtime===
 
Copy:
 
Copy:
<delphi>
+
<syntaxhighlight lang="delphi">
 
if assigned(LMDShellList1.selected) then
 
if assigned(LMDShellList1.selected) then
LMDDoContextMenuVerb( LMDShellList1, (LMDShellList1.Selected as TLMDShellListItem).ShellItem, 'copy');
+
  LMDShellDoContextMenuVerb( LMDShellList1, (LMDShellList1.Selected as TLMDShellListItem).ShellItem, 'copy');
</delphi>
+
</syntaxhighlight>
 
Paste:
 
Paste:
<delphi>
+
<syntaxhighlight lang="delphi">
LMDDoContextMenuVerb( LMDShellList2, LMDShellFolder2.ActiveFolder,'paste');
+
LMDShellDoContextMenuVerb( LMDShellList2, LMDShellFolder2.ActiveFolder,'paste');
</delphi>
+
</syntaxhighlight>
  
 
==LMD RichPack==
 
==LMD RichPack==
Line 27: Line 27:
 
===[Linker Error] Unresolved external "InternetCloseHandle" referenced from===
 
===[Linker Error] Unresolved external "InternetCloseHandle" referenced from===
 
Simply add wininet.lib to your project (file can be found in \lib directory of your C++ Builder / BDS / CRS installation). In recent IDEs you can also add<br>  
 
Simply add wininet.lib to your project (file can be found in \lib directory of your C++ Builder / BDS / CRS installation). In recent IDEs you can also add<br>  
<code>#pragma link "wininet.lib"</code><br> in your code.
+
<syntaxhighlight lang="cpp">
 
+
#pragma link "wininet.lib"
==NG Serialization==
+
</syntaxhighlight> in your code.
===How to serialize collections===
 
Serializing collections, including custom or standard collections (like TList) requires writing custom converters. For example, lets consider the folowing collection declaration:
 
 
 
<pre class="brush:delphi">
 
type
 
  TItem = class
 
  public
 
    X: Integer;
 
    Y: Integer;
 
  end;
 
 
 
  TItems = class(TObjectList<TItem>);
 
</pre>
 
 
 
To be able to serialize it, we need to declare a converter class, and '''associate''' this class with our collection using Converter attribute:
 
 
 
<pre class="brush:delphi">
 
type 
 
  TItemsConverter = class(TConverter)
 
  public
 
    function  GetReadMode: TReadMode; override;
 
    procedure Write(S: TSerializer; const V); override;
 
    procedure Read(D: TDeserializer; var V); override;
 
  end;
 
 
 
  [Converter(TItemsConverter)]
 
  TItems = class(TObjectList<TItem>);
 
</pre>
 
 
 
The converter can be implemented like this:
 
 
 
<pre class="brush:delphi">
 
</pre>
 

Latest revision as of 13:09, 28 April 2022

[edit]

<< Back to Overview page

LMD ShellPack

Using Paste/Copy commands at runtime

Copy:

if assigned(LMDShellList1.selected) then
  LMDShellDoContextMenuVerb( LMDShellList1, (LMDShellList1.Selected as TLMDShellListItem).ShellItem, 'copy');

Paste:

LMDShellDoContextMenuVerb( LMDShellList2, LMDShellFolder2.ActiveFolder,'paste');

LMD RichPack

Which MS RichEdit DLL Version can I expect on a specific operating system?

Please check list of different RichEdit versions.

Searching for specific attributes

Q: I was trying out the LMD RTF wrapper (using BCB 6) and wanted to know what would be the best way to search for words or characters with a specific attribute. A:

  • Use FindTextEx
  • Check SelAttributes
    if attrs not ok then FindTextEx again.

LMD WebPack

[Linker Error] Unresolved external "InternetCloseHandle" referenced from

Simply add wininet.lib to your project (file can be found in \lib directory of your C++ Builder / BDS / CRS installation). In recent IDEs you can also add

#pragma link "wininet.lib"
in your code.