View Issue Details

IDProjectCategoryView StatusLast Update
0025448LazarusLCLpublic2017-02-03 18:19
ReporterMichlAssigned ToMichl 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Platformx64OSWindowsOS Version7
Product Version1.3 (SVN)Product Buildr43538 FPC 2.7.1 
Target Version1.6.3 (SVN)Fixed in Version1.7 (SVN) 
Summary0025448: GetFormImage supplies black Bitmap
DescriptionTo make a Picture of a Form you can use GetFormImage. It returns a black Bitmap.
Steps To ReproduceA empty Form with 1 Button:

procedure TForm1.Button1Click(Sender: TObject);
var
  Bitmap:TBitmap;
begin
  Bitmap:=GetFormImage;
  Bitmap.SaveToFile('FormImage.bmp');
  Bitmap.Free;
end;
Additional InformationWorkaround: before saving use Canvas.Changed:

procedure TForm1.Button1Click(Sender: TObject);
var
  Bitmap:TBitmap;
begin
  Bitmap:=GetFormImage;
  Bitmap.Canvas.Changed;
  Bitmap.SaveToFile('FormImage.bmp');
  Bitmap.Free;
end;
Tagspatch
Fixed in Revision53790, 54033, 54077
LazTarget-
WidgetsetWin32/Win64
Attached Files
  • GetFormImage.zip (128,049 bytes)
  • patch.diff (425 bytes)
    Index: lcl/include/customform.inc
    ===================================================================
    --- lcl/include/customform.inc	(revision 43583)
    +++ lcl/include/customform.inc	(working copy)
    @@ -2566,6 +2566,7 @@
         LCLIntf.GetWindowRect(Handle, ARect);
         with GetClientOrigin do
           PaintTo(Result.Canvas, ARect.Left - X, ARect.Top - Y);
    +    Result.Canvas.Changed;
       except
         Result.Free;
         raise;
    
    patch.diff (425 bytes)
  • newtest.zip (2,160 bytes)
  • getformimage.png (17,142 bytes)
    getformimage.png (17,142 bytes)
  • r53790.png (2,891 bytes)
    r53790.png (2,891 bytes)
  • r53791.png (2,899 bytes)
    r53791.png (2,899 bytes)
  • win32wscontrols_01.patch (736 bytes)
    Index: lcl/interfaces/win32/win32wscontrols.pp
    ===================================================================
    --- lcl/interfaces/win32/win32wscontrols.pp	(revision 53791)
    +++ lcl/interfaces/win32/win32wscontrols.pp	(working copy)
    @@ -541,10 +541,15 @@
       ADC: HDC; X, Y: Integer);
     var
       SavedDC: Integer;
    +  WinCtrlDC: HDC;
    +  WinCtrlRect: TRect;
     begin
       SavedDC := SaveDC(ADC);
    +  WinCtrlDC := GetWindowDC(AWinControl.Handle);
    +  GetWindowRect(AWinControl.Handle, WinCtrlRect);
       MoveWindowOrgEx(ADC, X, Y);
    -  PrintWindow(AWinControl.Handle, ADC, 0);
    +  BitBlt(ADC, 0, 0, WinCtrlRect.Right, WinCtrlRect.Bottom, WinCtrlDC, 0, 0, SRCCOPY);
    +  ReleaseDC(AWinControl.Handle, WinCtrlDC);
       RestoreDC(ADC, SavedDC);
     end;
     
    
  • TestMemoHalfVisible.zip (3,255 bytes)
  • listboxpainto.zip (1,916 bytes)

Relationships

related to 0022132 resolvedJuha Manninen TStringGrid.PaintTo() doesn't work 
related to 0030892 resolvedJesus Reyes Clipping Region Error in TCustomGrid Descendents (Windows only) 
has duplicate 0024895 resolvedJuha Manninen ClipBoard.Assign() : puts a black Bitmap to the ClipBoard 
related to 0031288 closedwp Lazarus LCL Win32 does not run W2k 

Activities

Michl

2013-12-22 15:11

developer  

GetFormImage.zip (128,049 bytes)

Reinier Olislagers

2013-12-22 20:23

developer   ~0072010

Documentation
http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tcustomform.getformimage.html
suggests the workaround mentioned above should not be ncessary.
If it is, please update the documentation, thanks.

Michl

2013-12-22 23:17

developer  

patch.diff (425 bytes)
Index: lcl/include/customform.inc
===================================================================
--- lcl/include/customform.inc	(revision 43583)
+++ lcl/include/customform.inc	(working copy)
@@ -2566,6 +2566,7 @@
     LCLIntf.GetWindowRect(Handle, ARect);
     with GetClientOrigin do
       PaintTo(Result.Canvas, ARect.Left - X, ARect.Top - Y);
+    Result.Canvas.Changed;
   except
     Result.Free;
     raise;
patch.diff (425 bytes)

Michl

2013-12-22 23:18

developer   ~0072011

I don't know exactly what it does, but wouldn't be a patch a better way???

Maybe so:
function TCustomForm.GetFormImage: TBitmap;
var
  ARect: TRect;
begin
  Result := TBitmap.Create;
  try
    Result.Width := ClientWidth;
    Result.Height := ClientHeight;
    LCLIntf.GetWindowRect(Handle, ARect);
    with GetClientOrigin do
      PaintTo(Result.Canvas, ARect.Left - X, ARect.Top - Y);
    Result.Canvas.Changed;
  except
    Result.Free;
    raise;
  end;
end;

-> patch added

ocean

2014-09-23 21:33

reporter   ~0077568

Bug exists both win32 and gkt2.

Same code works in Delphi. Patch only hides the real bug.

image1.picture.assign(Bitmap); works, you see image.

But again

image1.picture.savetofile.. saves black.

Something seems to go wrong with saving.

Comment out this line in custombitmap.inc

//if (ImagePtr^.Data <> nil) and (ImagePtr^.DataSize > 0) then exit;

-> Bitmap is saved correctly.

Question is, why "Data<>nil" and "DataSize>0", but actual data is zeros.

Juha Manninen

2014-09-23 22:36

developer   ~0077569

The data can also be in a Stream. A little lower in the same TCustomBitmap.RawimageNeeded method there is:

  // use savestream if present
  if FSharedImage.FSaveStream <> nil ...

This was only a short analysis without knowing the code well.
Sometimes FSharedImage is casted to TSharedCustomBitmap and sometimes not, which makes the code a little messy.

If you find out how to solve this properly, I will apply your patch for sure.

Antônio Galvão

2015-03-31 00:34

reporter   ~0082483

Image1.Picture.Assign(GetFormImage) works.

jamie philbrook

2015-03-31 01:42

reporter   ~0082484

Keep in mind that doing the assign like that will leak because it is simply
copying the image from GetformImage and not taking ownership of it.
 
 I have spent a lot of time debugging the Tbitmap code and I can say it has
issues ;)

 When a Tbitmap is created, it takes the size given and creates a RawImage, not
a Windows GDI image.. A chunk of memory is allocate from the heap from the looks of it and is assumed that all drawing is going to be via rawimage code.
 This thinking is obviously due to drawing on the other targets.

 When ever a Canvas function is called, some of them from what I can see, but not all of them do check to see if a Canvas is needed and if so, creates a windows GDI and copy's the image from the ramimage over to it, then deletes the original rawimage and uses the new GDI as the raw image if accessed that way.
 At this point, both the rawimage code and GDI from windows will work..

 If you do a ScanLine Test to access the first line of the image, to determine the value of the pointer, first and after a GDI call, you'll find the image memory has changed, which is why so many have issues with doing direct access to an image, especially when the image has done this update and now the last pointer is no longer valid.

 I purpose that the Tbitmap should creating a DIBitmap from windows which returns a pointer to a chuck of memory and thus attached a Device Context to it at creation. The pointer is alive always and does not change, plus GDI calls will work as expected..
 
 The Canvas.Changed I think simply creates a GDI equal to the rawimage and resets everything to it. So to save code and speed, why not simply do this at the start of creation?

Antônio Galvão

2015-03-31 05:42

reporter   ~0082486

Last edited: 2015-03-31 05:44

View 3 revisions

For me this code works:

var
  b :Graphics.TBitmap;
begin
  b := GetFormImage;
  Image1.Picture.Assign(b);
  b.Free;
end;

Michl

2016-12-28 00:31

developer   ~0097096

This also failed without Image1.Picture.Bitmap.Canvas.Changed (new testproject added - newtest.zip):

procedure TForm1.Button4Click(Sender: TObject);
var
  Bitmap : TBitmap;
begin
  Bitmap := TBitmap.Create;
  Bitmap.SetSize(ClientWidth, ClientHeight);
  PaintTo(Bitmap.Canvas, 0 ,0);
// Bitmap.Canvas.Changed;
  Bitmap.SaveToFile(GetCurrentDir + PathDelim + 'test4.bmp');
  Bitmap.Free;
end;

The fix should be done in PaintTo (like in RasterImage.Draw).

Michl

2016-12-28 00:32

developer  

newtest.zip (2,160 bytes)

Michl

2016-12-28 00:51

developer   ~0097097

Fixed in revision 53790.

wp

2016-12-28 01:36

developer   ~0097098

Last edited: 2016-12-28 01:42

View 2 revisions

Definitely better than before. But there are small painting issues in themed Win10 (maybe others as well):

Add a button to execute the GetFormImage and any other controls. You'll see in the saved screenshot that multiline controls are drawn with a 3d border (not the themed flat border), and the spin buttons of the TSpinEdit are missing - see attached "getformimage.png". (In the screenshot, the TSpinEdit is the control left of the calendar displaying "0").

wp

2016-12-28 01:39

developer  

getformimage.png (17,142 bytes)
getformimage.png (17,142 bytes)

Fabio Luis Girardi

2016-12-28 02:40

reporter   ~0097101

Working fine on Gtk2 and Qt on Mint 17.3

Balázs Székely

2016-12-28 08:43

developer   ~0097103

Last edited: 2016-12-28 08:46

View 2 revisions

I would suggest to replace GetFormImage with this one, which in my experience works well in every platform:
function TCustomForm.GetFormImage: TBitmap;
var
  ScreenDC: HDC;
begin
  Result := TBitmap.Create;
  try
    ScreenDC := GetDC(Self.Handle);
    Result.LoadFromDevice(ScreenDC);
    ReleaseDC(Self.Handle, ScreenDC);
  except
    Result.Free;
    raise;
  end;
end;
Or at least add it as an alternative function. GetFormImageFromDC for example?

Michl

2016-12-28 09:33

developer   ~0097104

> I would suggest to replace GetFormImage with this one

Yesterday, I also tested this solution. Then you create a copy and don't use a shared bitmap. It takes more memory and time.

This test (on Win 7) is 20 times slower then the current solution, cause everytime TWidgetSet.RawImage_FromBitmap is called (of course it isn't a practical test):

procedure TForm1.Button1Click(Sender: TObject);
var
  Bitmap : TBitmap;
  Cnt: QWord;
  i: Integer;
begin
  Cnt := GetTickCount64;
  for i := 0 to 1000 do begin
    Bitmap := GetFormImage;
    Bitmap.Free;
  end;
  Caption := IntToStr(GetTickCount64 - Cnt);
end;


> Or at least add it as an alternative function. GetFormImageFromDC for example?

This possible, but imho these lines are written fast and documented: http://wiki.freepascal.org/Developing_with_Graphics#Taking_a_screenshot_of_the_screen

Michl

2016-12-28 09:54

developer   ~0097105

@wp: Yes, there are painting issues with TWinControl.PaintTo. I know this one, http://www.lazarusforum.de/viewtopic.php?f=25&t=9005 (GetFormImage doesn't draw the content of a TStringGrid 0022132).

Maybe PaintTo should be fixed for all controls, so we need a bug report / fix for every control or use the workaround for TCustomForm.GetFormImage, as written by Balázs?!

Luiz Americo

2016-12-28 12:11

developer   ~0097106

I fixed PaintTo in windows rev 53791. Please test

Michl

2016-12-28 12:39

developer   ~0097107

> I fixed PaintTo in windows rev 53791. Please test

I tested "newtest.zip" with rev 53791. Now the buttons aren't drawed normal after clicking on it.

wp

2016-12-28 12:42

developer   ~0097108

Perfect. Thank you.

Luiz Americo

2016-12-28 13:22

developer   ~0097109

You are welcome.

@Michl: this is how Windows paint focused buttons (with the hovered state). Also, in previous code it was already painting this way. Nothing we can do about.

Michl

2016-12-28 13:26

developer   ~0097110

Last edited: 2016-12-28 13:27

View 2 revisions

> @Michl: this is how Windows paint focused buttons (with the hovered state).
> Also, in previous code it was already painting this way. Nothing we can do
> about.

No, you understand my statement wrong. I don't speak about the image of the controls. It breaks the painting of controls itself (Windows 7).

Luiz Americo

2016-12-28 13:30

developer   ~0097111

In windows 10, works fine. Can you post the image?

Luiz Americo

2016-12-28 13:35

developer   ~0097112

Tested in windows XP and works fine

Michl

2016-12-28 13:37

developer  

r53790.png (2,891 bytes)
r53790.png (2,891 bytes)

Michl

2016-12-28 13:38

developer  

r53791.png (2,899 bytes)
r53791.png (2,899 bytes)

Michl

2016-12-28 13:46

developer   ~0097113

Last edited: 2016-12-28 13:49

View 2 revisions

I added two pictures. The first one r53790 shows, Button2 is "normal" after finishing Button2Click. The second one r53791, Button2 is further shown as "pressed" after finishing Button2Click.

BTW, in the image the behaviour is reverted.

Luiz Americo

2016-12-28 14:07

developer   ~0097114

Seems that PrintWindow captures the state of the window being printed / painted. Not a issue per si. It can even be considered as more accurate.

No reason to revert and as said early there's nothing we can do about it

BTW: to avoid that just call PaintTo in an control not child of the control being painted, or in an control that is not affected by press state or using a Timer

wp

2016-12-28 15:32

developer   ~0097120

Last edited: 2016-12-28 15:33

View 2 revisions

Why is it that the saved screenshot after Button2 click does not show the image with the buttons while it is visible directly on the screen? Even if I insert "Image1.Refresh" and "Application.ProcessMessages" between assigning the bitmap to the image and before saving the bitmap to file.

procedure TForm1.Button2Click(Sender: TObject);
var
  Bitmap :Graphics.TBitmap;
begin
  Bitmap := GetFormImage;
  Image1.Picture.Assign(Bitmap);
  //Image1.Picture.Bitmap.Canvas.Changed;
  Image1.Repaint;
  Application.ProcessMessages;
  Image1.Picture.SaveToFile(GetCurrentDir + PathDelim + 'test2.bmp');
  Bitmap.Free;
end;

Michl

2016-12-28 16:47

developer   ~0097121

> Why is it that the saved screenshot after Button2 click does not show the image
> with the buttons while it is visible directly on the screen?

You make a copy of your form. This copy is assigned to Image1.Picture.Bitmap. This copy is saved to disk (not the form with the TImage). Everything is fine.

If you click again on Button2, then you make a copy of your form (also with the TImage with a copy ot the form). Then this is saved to disk too. Everything is fine.

Michl

2016-12-28 17:36

developer   ~0097122

> Seems that PrintWindow captures the state of the window being printed /
> painted.

Yes, it seems so.


> Not a issue per si. It can even be considered as more accurate.

No, it is wrong. The behaviour before was correct. After ending a method of TButton.Click, the button should be shown normal.


> No reason to revert

Yes, the advantages are much bigger. It fixes also some other bugs. I'll mark them as fixed.
Thank you very much for that!


> and as said early there's nothing we can do about it
> BTW: to avoid that just call PaintTo in an control not child of the control
> being painted, or in an control that is not affected by press state or using
> a Timer

Yes, I know it. But it worked before and it work in Delphi. I'll create a new bugreport about this issue, if it wouldn't be fixed yet - will see.

Luiz Americo

2016-12-28 18:06

developer   ~0097123

> No, it is wrong. The behaviour before was correct. After ending a method of TButton.Click, the button should be shown normal.

Exact. This is the point. At the time GetFormImage is called the button click event has not finished yet, so is correct to print with the pressed state.

BTW: to be sure we are talking about the same thing, are you talking about the image being painted or the actual button?

Luiz Americo

2016-12-28 18:10

developer   ~0097124

@Michl: did you disabled theme support in windows 7 to take those screenshots?

Michl

2016-12-28 18:12

developer   ~0097125

> BTW: to be sure we are talking about the same thing, are you talking about the
> image being painted or the actual button?

No, as written before. It breaks the drawing after finishing! The added pictures I've made with Windows shortcuts, seconds after the running of the app, not inside the image being painted.

Luiz Americo

2016-12-28 18:23

developer   ~0097129

> It breaks the drawing after finishing!

The drawing of the actual button?

Clarify another thing r53790.png is from r53791 and r53791.png is from r53790?

Michl

2016-12-28 18:29

developer   ~0097130

> The drawing of the actual button?

Yes!


> Clarify another thing r53790.png is from r53791 and r53791.png is from r53790?

No, it is as it is ;) just tested again.

Michl

2016-12-28 22:12

developer   ~0097135

Last edited: 2016-12-28 22:22

View 2 revisions

> did you disabled theme support in windows 7 to take those screenshots?

Sorry, I missed the question. No the screenshots are made with enabled them support.

Interesting, if I disable theme support, the button is painted correct after finishing.

[Edit]:
It is a real special problem, I have. On Windows 10, I can't see the problem, also not on Windows 7, if I change the theme to a Aero theme.

So it seems only to occur on Windows 7, classic theme (maybe a Windows bug or limit).

Luiz Americo

2016-12-28 23:15

developer   ~0097137

Thanks. Only now i got that the problem you were talking was with the actual button.
I cannot reproduce also in windows 10 (theme enabled or not) or Windows XP

Michl

2016-12-29 13:50

developer  

win32wscontrols_01.patch (736 bytes)
Index: lcl/interfaces/win32/win32wscontrols.pp
===================================================================
--- lcl/interfaces/win32/win32wscontrols.pp	(revision 53791)
+++ lcl/interfaces/win32/win32wscontrols.pp	(working copy)
@@ -541,10 +541,15 @@
   ADC: HDC; X, Y: Integer);
 var
   SavedDC: Integer;
+  WinCtrlDC: HDC;
+  WinCtrlRect: TRect;
 begin
   SavedDC := SaveDC(ADC);
+  WinCtrlDC := GetWindowDC(AWinControl.Handle);
+  GetWindowRect(AWinControl.Handle, WinCtrlRect);
   MoveWindowOrgEx(ADC, X, Y);
-  PrintWindow(AWinControl.Handle, ADC, 0);
+  BitBlt(ADC, 0, 0, WinCtrlRect.Right, WinCtrlRect.Bottom, WinCtrlDC, 0, 0, SRCCOPY);
+  ReleaseDC(AWinControl.Handle, WinCtrlDC);
   RestoreDC(ADC, SavedDC);
 end;
 

Michl

2016-12-29 13:50

developer  

TestMemoHalfVisible.zip (3,255 bytes)

Michl

2016-12-29 13:59

developer   ~0097144

@Luiz: what do you think about win32wscontrols_01.patch. I take the idea from http://stackoverflow.com/questions/6241407/what-is-wrong-with-printwindow
It works for me better then PrintWindow.

Generally, PrintWindow and BitBlt don't work for half painted controls, what was possible with SendMessage WM_PRINT, see TestMemoHalfVisible.zip (at least Windows 7, actually I can't check other platforms / Delphi, my keyboard is gone on my development pc).

Luiz Americo

2016-12-31 01:20

developer   ~0097180

I'm fine with it, working fine here.
Please just rename WinCtrl* -> WinControl* to keep consistent with surrounding code

Michl

2017-01-30 08:25

developer   ~0097804

I changed PaintTo partly back for older Windows versions and not themed Windows 7 versions, because min. Win XP or Win 2003 are minimal required for PrintWindow: https://msdn.microsoft.com/de-de/library/windows/desktop/dd162869(v=vs.85).aspx

Maybe we can check, if wvXP (instead of wv7) is the used version, but as I can see on WinXP, sending a paint message works fine there and PrintWindow works fine for Windows 8 and upward.

Michl

2017-02-01 14:26

developer   ~0097873

@Luiz: I think, we have to reject completely revision 53791, because after that, it isn't possible to use PainTo for other WinControls than TForm.

Please try something like:

  Image1.Picture.Bitmap.SetSize(ListBox1.Width, ListBox1.Height);
  ListBox1.PaintTo(Image1.Picture.Bitmap.Canvas, 0, 0);

or the added project: listboxpainto.zip.

Michl

2017-02-01 14:27

developer  

listboxpainto.zip (1,916 bytes)

Luiz Americo

2017-02-02 12:57

developer   ~0097922

Feel free to do it.

BTW: why did you not applied your patch?

Michl

2017-02-02 20:49

developer   ~0097934

Because it also has some negative effects. Then the control isn't painted only copied (if it is partly hidden by a frame, the frame is painted, not the control). This behaviour we don't have with the paint message.

Michl

2017-02-02 21:00

developer   ~0097935

Rejected in 54077

Issue History

Date Modified Username Field Change
2013-12-22 15:11 Michl New Issue
2013-12-22 15:11 Michl File Added: GetFormImage.zip
2013-12-22 20:23 Reinier Olislagers Note Added: 0072010
2013-12-22 23:17 Michl File Added: patch.diff
2013-12-22 23:18 Michl Note Added: 0072011
2013-12-23 00:02 Bart Broersma LazTarget => -
2013-12-23 00:02 Bart Broersma Status new => confirmed
2014-09-23 21:33 ocean Note Added: 0077568
2014-09-23 22:36 Juha Manninen Note Added: 0077569
2014-09-24 10:18 Juha Manninen Relationship added has duplicate 0024895
2014-09-27 20:12 Zeljan Rikalo Tag Attached: patch
2015-03-31 00:34 Antônio Galvão Note Added: 0082483
2015-03-31 01:42 jamie philbrook Note Added: 0082484
2015-03-31 05:42 Antônio Galvão Note Added: 0082486
2015-03-31 05:44 Antônio Galvão Note Edited: 0082486 View Revisions
2015-03-31 05:44 Antônio Galvão Note Edited: 0082486 View Revisions
2016-12-27 23:48 Michl Assigned To => Michl
2016-12-27 23:48 Michl Status confirmed => assigned
2016-12-27 23:53 Michl File Added: newtest.zip
2016-12-28 00:31 Michl Note Added: 0097096
2016-12-28 00:32 Michl File Deleted: newtest.zip
2016-12-28 00:32 Michl File Added: newtest.zip
2016-12-28 00:51 Michl Fixed in Revision => 53790
2016-12-28 00:51 Michl Note Added: 0097097
2016-12-28 00:51 Michl Status assigned => resolved
2016-12-28 00:51 Michl Fixed in Version => 1.7 (SVN)
2016-12-28 00:51 Michl Resolution open => fixed
2016-12-28 00:51 Michl Target Version => 1.6.3 (SVN)
2016-12-28 01:36 wp Note Added: 0097098
2016-12-28 01:36 wp File Added: getformimage.png
2016-12-28 01:39 wp File Deleted: getformimage.png
2016-12-28 01:39 wp File Added: getformimage.png
2016-12-28 01:41 wp Status resolved => feedback
2016-12-28 01:42 wp Note Edited: 0097098 View Revisions
2016-12-28 02:40 Fabio Luis Girardi Note Added: 0097101
2016-12-28 08:43 Balázs Székely Note Added: 0097103
2016-12-28 08:46 Balázs Székely Note Edited: 0097103 View Revisions
2016-12-28 09:33 Michl Note Added: 0097104
2016-12-28 09:33 Michl Status feedback => assigned
2016-12-28 09:54 Michl Note Added: 0097105
2016-12-28 09:54 Michl Relationship added related to 0022132
2016-12-28 12:11 Luiz Americo Note Added: 0097106
2016-12-28 12:39 Michl Note Added: 0097107
2016-12-28 12:42 wp Note Added: 0097108
2016-12-28 13:22 Luiz Americo Note Added: 0097109
2016-12-28 13:26 Michl Note Added: 0097110
2016-12-28 13:27 Michl Note Edited: 0097110 View Revisions
2016-12-28 13:30 Luiz Americo Note Added: 0097111
2016-12-28 13:35 Luiz Americo Note Added: 0097112
2016-12-28 13:37 Michl File Added: r53790.png
2016-12-28 13:38 Michl File Added: r53791.png
2016-12-28 13:46 Michl Note Added: 0097113
2016-12-28 13:49 Michl Note Edited: 0097113 View Revisions
2016-12-28 14:07 Luiz Americo Note Added: 0097114
2016-12-28 15:32 wp Note Added: 0097120
2016-12-28 15:33 wp Note Edited: 0097120 View Revisions
2016-12-28 16:47 Michl Note Added: 0097121
2016-12-28 17:36 Michl Note Added: 0097122
2016-12-28 18:06 Luiz Americo Note Added: 0097123
2016-12-28 18:10 Luiz Americo Note Added: 0097124
2016-12-28 18:12 Michl Note Added: 0097125
2016-12-28 18:23 Luiz Americo Note Added: 0097129
2016-12-28 18:23 Michl Relationship added related to 0030892
2016-12-28 18:29 Michl Note Added: 0097130
2016-12-28 22:12 Michl Note Added: 0097135
2016-12-28 22:22 Michl Note Edited: 0097135 View Revisions
2016-12-28 23:15 Luiz Americo Note Added: 0097137
2016-12-29 13:50 Michl File Added: win32wscontrols_01.patch
2016-12-29 13:50 Michl File Added: TestMemoHalfVisible.zip
2016-12-29 13:59 Michl Note Added: 0097144
2016-12-31 01:20 Luiz Americo Note Added: 0097180
2017-01-30 07:24 Michl Relationship added related to 0031288
2017-01-30 08:25 Michl Fixed in Revision 53790 => 53790, 54033
2017-01-30 08:25 Michl Note Added: 0097804
2017-01-30 08:25 Michl Status assigned => resolved
2017-02-01 14:26 Michl Note Added: 0097873
2017-02-01 14:26 Michl Status resolved => feedback
2017-02-01 14:27 Michl File Added: listboxpainto.zip
2017-02-02 12:57 Luiz Americo Note Added: 0097922
2017-02-02 20:49 Michl Note Added: 0097934
2017-02-02 20:49 Michl Status feedback => assigned
2017-02-02 21:00 Michl Fixed in Revision 53790, 54033 => 53790, 54033, 54077
2017-02-02 21:00 Michl Note Added: 0097935
2017-02-02 21:00 Michl Status assigned => resolved
2017-02-03 18:19 Michl Status resolved => closed