Tekening

Check-in [90ffd07634]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:De muissnelheid on-the-fly kunnen aanpassen met Shift+Alt+Up/Down. Deze onthouden in een .ini. Met Shift+Escape de tekening opslaan en het blad weer leegmaken.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | develop
Files: files | file ages | folders
SHA1: 90ffd0763450acf011b0d320d197b82c414ab8a0
User & Date: tinus 2017-06-11 08:11:13
Context
2017-06-11
09:08
Muiswieltje draaien verandert de kleurtint (loopt de regenboog af). check-in: 9d34b72e1e user: tinus tags: develop
08:11
De muissnelheid on-the-fly kunnen aanpassen met Shift+Alt+Up/Down. Deze onthouden in een .ini. Met Shift+Escape de tekening opslaan en het blad weer leegmaken. check-in: 90ffd07634 user: tinus tags: develop
2017-05-22
19:27
Slow down the mouse sensitivity for the duration of the program (it's for children, after all). Works on Windows, untested on Linux. check-in: 55e48dcebd user: tinus tags: develop
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/f_main.lfm.

54
55
56
57
58
59
60
61







62

      26
      26
      26
      26
      26
      64
    )
  end







end









>
>
>
>
>
>
>
|
>
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
      26
      26
      26
      26
      26
      64
    )
  end
  object propsTekening: TIniPropStorage
    StoredValues = <>
    IniSection = 'Main'
    OnSaveProperties = propsTekeningSaveProperties
    OnRestoreProperties = propsTekeningRestoreProperties
    left = 328
    top = 215
  end
end

Changes to src/f_main.pas.

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

19
20
21
22
23
24
25
..
29
30
31
32
33
34
35


36
37
38
39

40
41
42
43


44
45
46

47

48
49
50
51
52
53
54
55
56
57


58
59
60
61
62
63
64
..
69
70
71
72
73
74
75


76
77
78
79
80
81
82
83
...
100
101
102
103
104
105
106
107
108
109
110
111
112
113






114
115
116
117
118
119






120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150

151
152
153
154
155
156
157
...
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
...
319
320
321
322
323
324
325


















326
327
328
329
330
331
332
...
371
372
373
374
375
376
377





378
379
380
381
382
383
384
...
395
396
397
398
399
400
401








402
403
404
405
406
407
408

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  LCLType, Grids, Types;

type

  TDrawingState = (dsNothing, dsDrawing, dsErasing);

  { TfrmTekening }

  TfrmTekening = class(TForm)
    grdColors: TDrawGrid;

    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
................................................................................
    procedure FormUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
    procedure grdColorsDrawCell(Sender: TObject; aCol, aRow: Integer;
      aRect: TRect; aState: TGridDrawState);
    procedure grdColorsHeaderClick(Sender: TObject; IsColumn: Boolean;
      Index: Integer);
    procedure grdColorsMouseEnter(Sender: TObject);
    procedure grdColorsMouseLeave(Sender: TObject);


  private
    { private declarations }
    FOrgMouseSpeed: Integer;
    FOrgMouseSonar: boolean;

    FPNG: TPortableNetworkGraphic;
    FSelectedColor: TColorRef;
    FDrawing: TDrawingState;
    FSkip: Boolean;


    procedure MoveTo(const X, Y: Integer);
    procedure LineTo(const X, Y: Integer); overload;
    procedure LineTo(const X, Y: Integer; const AColor: TColor); overload;

    procedure SetDrawing(const AValue: TDrawingState);

    procedure SetSelectedColor(const AValue: TColorRef);
    procedure TextOut(const ACanvas: TCanvas; const AText: string);

    function  ColumnColor(const ColumnIndex: Integer): TColorRef;
    function  DrawingCursor(const DrawingState: TDrawingState): TCursor;
  public
    { public declarations }

    property Drawing: TDrawingState   read FDrawing       write SetDrawing;
    property SelectedColor: TColorRef read FSelectedColor write SetSelectedColor;


  end;

var
  frmTekening: TfrmTekening;

implementation
uses
................................................................................
{ TfrmTekening }

procedure TfrmTekening.FormCreate(Sender: TObject);
begin
  SystemParametersInfo(SPI_GETMOUSESPEED, 0, @FOrgMouseSpeed, 0);
  SystemParametersInfo(SPI_GETMOUSESONAR, 0, @FOrgMouseSonar, 0);



  SystemParametersInfo(SPI_SETMOUSESPEED, 0, Pointer(1), 0);
  SystemParametersInfo(SPI_SETMOUSESONAR, 0, Pointer(True), 0);

  FPNG := TPortableNetworkGraphic.Create;
  FPNG.PixelFormat := pf24bit;
  FPNG.Transparent := False;
  FPNG.SetSize(Screen.DesktopWidth, Screen.DesktopHeight);
  FPNG.Canvas.Brush.Style := bsSolid;
................................................................................
  Self.SetBounds(Screen.DesktopLeft, Screen.DesktopTop, Screen.DesktopWidth, Screen.DesktopHeight);

  Randomize;

  grdColors.AutoFillColumns := True;
end;

procedure TfrmTekening.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  CP: TPoint;
  FontHeight: Integer;
begin
  case Key of






    VK_F1..VK_F12: begin
      SelectedColor := ColumnColor(Key - VK_F1);
      if Shift = [] then
        Key := 0;
    end;
    VK_PRIOR..VK_DOWN: begin






      FontHeight := Canvas.Font.Height;
      if FontHeight < 0 then
        FontHeight := -FontHeight
      else if FontHeight = 0 then
        FontHeight := 10;
      CP := Point(0, 0);
      if GetCursorPos(CP) then begin
        case Key of
          VK_LEFT:  Dec(CP.x, FontHeight);
          VK_RIGHT: Inc(CP.x, FontHeight);
          VK_UP:    Dec(CP.y, FontHeight);
          VK_DOWN:  Inc(CP.y, FontHeight);
          VK_PRIOR: begin
            Inc(CP.x, FontHeight);
            Dec(CP.y, FontHeight);
          end;
          VK_NEXT: begin
            Inc(CP.x, FontHeight);
            Inc(CP.y, FontHeight);
          end;
          VK_HOME: begin
            Dec(CP.x, FontHeight);
            Dec(CP.y, FontHeight);
          end;
          VK_END: begin
            Dec(CP.x, FontHeight);
            Inc(CP.y, FontHeight);
          end;
        end;
        SetCursorPos(CP.x, CP.y);
      end;

    end {cursor keys};
    VK_INSERT: begin
      if Drawing = dsDrawing then
        Drawing := dsNothing
      else
        Drawing := dsDrawing;
    end;
................................................................................
begin
  OnMouseDown := nil;
  OnMouseMove := nil;

  SystemParametersInfo(SPI_SETMOUSESPEED, 0, Pointer(FOrgMouseSpeed), 0);
  SystemParametersInfo(SPI_SETMOUSESONAR, 0, Pointer(Integer(FOrgMouseSonar)), 0);

  FPNG.SaveToFile(IncludeTrailingPathDelimiter(GetUserDir) + 'tekening-' + FormatDateTime('yyyy-MM-dd_hh.nn.ss', Now) + '.png');
  FPNG.Free;
end;

procedure TfrmTekening.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  case Button of
................................................................................
  Self.Cursor := grdColors.Cursor;
end;

procedure TfrmTekening.grdColorsMouseLeave(Sender: TObject);
begin
  Self.Cursor := DrawingCursor(FDrawing);
end;



















procedure TfrmTekening.MoveTo(const X, Y: Integer);
begin
  FPNG.Canvas.MoveTo(X, Y);
  Canvas.MoveTo(X, Y);
end;

................................................................................

    LineTo(X, Y);
  finally
    FPNG.Canvas.Pen.Color := OldPNGColor;
    Self.Canvas.Pen.Color := OldColor;
  end;
end;






function TfrmTekening.DrawingCursor(const DrawingState: TDrawingState): TCursor;
begin
  case FDrawing of
    dsDrawing: Result := crHandPoint;
    dsErasing: Result := crNo;
    else       Result := crDefault;
................................................................................
    Self.Canvas.Pen.Width := PenWidth * 2;
    FPNG.Canvas.Pen.Width := PenWidth * 2;
  end else begin
    Self.Canvas.Pen.Width := PenWidth;
    FPNG.Canvas.Pen.Width := PenWidth;
  end;
end;









procedure TfrmTekening.SetSelectedColor(const AValue: TColorRef);
begin
  if FSelectedColor = AValue then Exit;
  FSelectedColor := AValue;
  grdColors.Invalidate;
end;







|









>







 







>
>




>




>
>



>

>










>
>







 







>
>
|







 







|
<





>
>
>
>
>
>





|
>
>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>







 







|







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>







 







>
>
>
>
>
>
>
>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
..
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
..
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
...
112
113
114
115
116
117
118
119

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
...
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
...
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
...
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
...
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  LCLType, Grids, IniPropStorage, Types;

type

  TDrawingState = (dsNothing, dsDrawing, dsErasing);

  { TfrmTekening }

  TfrmTekening = class(TForm)
    grdColors: TDrawGrid;
    propsTekening: TIniPropStorage;
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
................................................................................
    procedure FormUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
    procedure grdColorsDrawCell(Sender: TObject; aCol, aRow: Integer;
      aRect: TRect; aState: TGridDrawState);
    procedure grdColorsHeaderClick(Sender: TObject; IsColumn: Boolean;
      Index: Integer);
    procedure grdColorsMouseEnter(Sender: TObject);
    procedure grdColorsMouseLeave(Sender: TObject);
    procedure propsTekeningRestoreProperties(Sender: TObject);
    procedure propsTekeningSaveProperties(Sender: TObject);
  private
    { private declarations }
    FOrgMouseSpeed: Integer;
    FOrgMouseSonar: boolean;
    FMouseSpeed: Integer;
    FPNG: TPortableNetworkGraphic;
    FSelectedColor: TColorRef;
    FDrawing: TDrawingState;
    FSkip: Boolean;

    procedure ClearImage;
    procedure MoveTo(const X, Y: Integer);
    procedure LineTo(const X, Y: Integer); overload;
    procedure LineTo(const X, Y: Integer; const AColor: TColor); overload;
    procedure SaveImage;
    procedure SetDrawing(const AValue: TDrawingState);
    procedure SetMouseSpeed(const AValue: Integer);
    procedure SetSelectedColor(const AValue: TColorRef);
    procedure TextOut(const ACanvas: TCanvas; const AText: string);

    function  ColumnColor(const ColumnIndex: Integer): TColorRef;
    function  DrawingCursor(const DrawingState: TDrawingState): TCursor;
  public
    { public declarations }

    property Drawing: TDrawingState   read FDrawing       write SetDrawing;
    property SelectedColor: TColorRef read FSelectedColor write SetSelectedColor;

    property MouseSpeed: Integer      read FMouseSpeed    write SetMouseSpeed;
  end;

var
  frmTekening: TfrmTekening;

implementation
uses
................................................................................
{ TfrmTekening }

procedure TfrmTekening.FormCreate(Sender: TObject);
begin
  SystemParametersInfo(SPI_GETMOUSESPEED, 0, @FOrgMouseSpeed, 0);
  SystemParametersInfo(SPI_GETMOUSESONAR, 0, @FOrgMouseSonar, 0);

  propsTekening.Restore; // read the mouse speed

  SystemParametersInfo(SPI_SETMOUSESPEED, 0, Pointer(FMouseSpeed), 0);
  SystemParametersInfo(SPI_SETMOUSESONAR, 0, Pointer(True), 0);

  FPNG := TPortableNetworkGraphic.Create;
  FPNG.PixelFormat := pf24bit;
  FPNG.Transparent := False;
  FPNG.SetSize(Screen.DesktopWidth, Screen.DesktopHeight);
  FPNG.Canvas.Brush.Style := bsSolid;
................................................................................
  Self.SetBounds(Screen.DesktopLeft, Screen.DesktopTop, Screen.DesktopWidth, Screen.DesktopHeight);

  Randomize;

  grdColors.AutoFillColumns := True;
end;

procedure TfrmTekening.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

var
  CP: TPoint;
  FontHeight: Integer;
begin
  case Key of
    VK_ESCAPE: begin
      if (ssShift in Shift) then begin
        SaveImage;
        ClearImage;
      end;
    end;
    VK_F1..VK_F12: begin
      SelectedColor := ColumnColor(Key - VK_F1);
      if Shift = [] then
        Key := 0;
    end;
    VK_PRIOR..VK_DOWN: begin // cursor keys
      if (ssShift in Shift) and (ssAlt in Shift) then begin
        case Key of
          VK_UP:    MouseSpeed := MouseSpeed + 1;
          VK_DOWN:  MouseSpeed := MouseSpeed - 1;
        end;
      end else begin
        FontHeight := Canvas.Font.Height;
        if FontHeight < 0 then
          FontHeight := -FontHeight
        else if FontHeight = 0 then
          FontHeight := 10;
        CP := Point(0, 0);
        if GetCursorPos(CP) then begin
          case Key of
            VK_LEFT:  Dec(CP.x, FontHeight);
            VK_RIGHT: Inc(CP.x, FontHeight);
            VK_UP:    Dec(CP.y, FontHeight);
            VK_DOWN:  Inc(CP.y, FontHeight);
            VK_PRIOR: begin
              Inc(CP.x, FontHeight);
              Dec(CP.y, FontHeight);
            end;
            VK_NEXT: begin
              Inc(CP.x, FontHeight);
              Inc(CP.y, FontHeight);
            end;
            VK_HOME: begin
              Dec(CP.x, FontHeight);
              Dec(CP.y, FontHeight);
            end;
            VK_END: begin
              Dec(CP.x, FontHeight);
              Inc(CP.y, FontHeight);
            end;
          end;
          SetCursorPos(CP.x, CP.y);
        end;
      end {no Alt+Shift};
    end {cursor keys};
    VK_INSERT: begin
      if Drawing = dsDrawing then
        Drawing := dsNothing
      else
        Drawing := dsDrawing;
    end;
................................................................................
begin
  OnMouseDown := nil;
  OnMouseMove := nil;

  SystemParametersInfo(SPI_SETMOUSESPEED, 0, Pointer(FOrgMouseSpeed), 0);
  SystemParametersInfo(SPI_SETMOUSESONAR, 0, Pointer(Integer(FOrgMouseSonar)), 0);

  SaveImage;
  FPNG.Free;
end;

procedure TfrmTekening.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  case Button of
................................................................................
  Self.Cursor := grdColors.Cursor;
end;

procedure TfrmTekening.grdColorsMouseLeave(Sender: TObject);
begin
  Self.Cursor := DrawingCursor(FDrawing);
end;

procedure TfrmTekening.propsTekeningRestoreProperties(Sender: TObject);
begin
  FMouseSpeed := propsTekening.ReadInteger('MouseSpeed', 5);
end;

procedure TfrmTekening.propsTekeningSaveProperties(Sender: TObject);
begin
  propsTekening.WriteInteger('MouseSpeed', FMouseSpeed);
end;

procedure TfrmTekening.ClearImage;
begin
  FPNG.Canvas.Brush.Style := bsSolid;
  FPNG.Canvas.FillRect(Self.ClientRect);
  Self.Canvas.Brush.Style := bsSolid;
  Self.Canvas.FillRect(Self.ClientRect);
end;

procedure TfrmTekening.MoveTo(const X, Y: Integer);
begin
  FPNG.Canvas.MoveTo(X, Y);
  Canvas.MoveTo(X, Y);
end;

................................................................................

    LineTo(X, Y);
  finally
    FPNG.Canvas.Pen.Color := OldPNGColor;
    Self.Canvas.Pen.Color := OldColor;
  end;
end;

procedure TfrmTekening.SaveImage;
begin
  FPNG.SaveToFile(IncludeTrailingPathDelimiter(GetUserDir) + 'tekening-' + FormatDateTime('yyyy-MM-dd_hh.nn.ss', Now) + '.png');
end;

function TfrmTekening.DrawingCursor(const DrawingState: TDrawingState): TCursor;
begin
  case FDrawing of
    dsDrawing: Result := crHandPoint;
    dsErasing: Result := crNo;
    else       Result := crDefault;
................................................................................
    Self.Canvas.Pen.Width := PenWidth * 2;
    FPNG.Canvas.Pen.Width := PenWidth * 2;
  end else begin
    Self.Canvas.Pen.Width := PenWidth;
    FPNG.Canvas.Pen.Width := PenWidth;
  end;
end;

procedure TfrmTekening.SetMouseSpeed(const AValue: Integer);
begin
  if FMouseSpeed = AValue then Exit;
  FMouseSpeed := AValue;
  SystemParametersInfo(SPI_SETMOUSESPEED, 0, Pointer(FMouseSpeed), 0);
  propsTekening.Save; // store mouse speed
end;

procedure TfrmTekening.SetSelectedColor(const AValue: TColorRef);
begin
  if FSelectedColor = AValue then Exit;
  FSelectedColor := AValue;
  grdColors.Invalidate;
end;

Changes to src/tekening.lpi.

1
2
3
4
5
6
7
8
9
10
11
..
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
..
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
...
112
113
114
115
116
117
118
119
120
121
122



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
...
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?xml version="1.0"?>
<CONFIG>
  <ProjectOptions>
    <Version Value="9"/>
    <General>
      <SessionStorage Value="InProjectDir"/>
      <MainUnit Value="0"/>
      <Title Value="tekening"/>
      <ResourceType Value="res"/>
      <UseXPManifest Value="True"/>
      <Icon Value="0"/>
................................................................................
              </Win32>
            </Options>
          </Linking>
          <Other>
            <CompilerMessages>
              <IgnoredMessages idx5024="True"/>
            </CompilerMessages>
            <CompilerPath Value="$(CompPath)"/>
          </Other>
        </CompilerOptions>
      </Item2>
      <Item3 Name="Release">
        <CompilerOptions>
          <Version Value="11"/>
          <Target>
................................................................................
              </Win32>
            </Options>
          </Linking>
          <Other>
            <CompilerMessages>
              <IgnoredMessages idx5024="True"/>
            </CompilerMessages>
            <CompilerPath Value="$(CompPath)"/>
          </Other>
        </CompilerOptions>
      </Item3>
    </BuildModes>
    <PublishOptions>
      <Version Value="2"/>
      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
................................................................................
    </PublishOptions>
    <RunParams>
      <local>
        <FormatVersion Value="1"/>
        <LaunchingApplication PathPlusParams="/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
      </local>
    </RunParams>
    <RequiredPackages Count="1">
      <Item1>
        <PackageName Value="LCL"/>
      </Item1>



    </RequiredPackages>
    <Units Count="2">
      <Unit0>
        <Filename Value="tekening.pas"/>
        <IsPartOfProject Value="True"/>
        <UnitName Value="tekening"/>
      </Unit0>
      <Unit1>
        <Filename Value="f_main.pas"/>
        <IsPartOfProject Value="True"/>
        <ComponentName Value="frmTekening"/>
        <HasResources Value="True"/>
        <ResourceBaseClass Value="Form"/>
        <UnitName Value="f_main"/>
      </Unit1>
    </Units>
  </ProjectOptions>
  <CompilerOptions>
    <Version Value="11"/>
    <Target>
      <Filename Value="tekening"/>
................................................................................
    <Linking>
      <Options>
        <Win32>
          <GraphicApplication Value="True"/>
        </Win32>
      </Options>
    </Linking>
    <Other>
      <CompilerPath Value="$(CompPath)"/>
    </Other>
  </CompilerOptions>
  <Debugging>
    <Exceptions Count="3">
      <Item1>
        <Name Value="EAbort"/>
      </Item1>
      <Item2>
|


|







 







<







 







<







 







|

|

>
>
>





<







<







 







<
<
<







1
2
3
4
5
6
7
8
9
10
11
..
56
57
58
59
60
61
62

63
64
65
66
67
68
69
..
95
96
97
98
99
100
101

102
103
104
105
106
107
108
...
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

129
130
131
132
133
134
135

136
137
138
139
140
141
142
...
153
154
155
156
157
158
159



160
161
162
163
164
165
166
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
  <ProjectOptions>
    <Version Value="10"/>
    <General>
      <SessionStorage Value="InProjectDir"/>
      <MainUnit Value="0"/>
      <Title Value="tekening"/>
      <ResourceType Value="res"/>
      <UseXPManifest Value="True"/>
      <Icon Value="0"/>
................................................................................
              </Win32>
            </Options>
          </Linking>
          <Other>
            <CompilerMessages>
              <IgnoredMessages idx5024="True"/>
            </CompilerMessages>

          </Other>
        </CompilerOptions>
      </Item2>
      <Item3 Name="Release">
        <CompilerOptions>
          <Version Value="11"/>
          <Target>
................................................................................
              </Win32>
            </Options>
          </Linking>
          <Other>
            <CompilerMessages>
              <IgnoredMessages idx5024="True"/>
            </CompilerMessages>

          </Other>
        </CompilerOptions>
      </Item3>
    </BuildModes>
    <PublishOptions>
      <Version Value="2"/>
      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
................................................................................
    </PublishOptions>
    <RunParams>
      <local>
        <FormatVersion Value="1"/>
        <LaunchingApplication PathPlusParams="/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
      </local>
    </RunParams>
    <RequiredPackages Count="2">
      <Item1>
        <PackageName Value="FCL"/>
      </Item1>
      <Item2>
        <PackageName Value="LCL"/>
      </Item2>
    </RequiredPackages>
    <Units Count="2">
      <Unit0>
        <Filename Value="tekening.pas"/>
        <IsPartOfProject Value="True"/>

      </Unit0>
      <Unit1>
        <Filename Value="f_main.pas"/>
        <IsPartOfProject Value="True"/>
        <ComponentName Value="frmTekening"/>
        <HasResources Value="True"/>
        <ResourceBaseClass Value="Form"/>

      </Unit1>
    </Units>
  </ProjectOptions>
  <CompilerOptions>
    <Version Value="11"/>
    <Target>
      <Filename Value="tekening"/>
................................................................................
    <Linking>
      <Options>
        <Win32>
          <GraphicApplication Value="True"/>
        </Win32>
      </Options>
    </Linking>



  </CompilerOptions>
  <Debugging>
    <Exceptions Count="3">
      <Item1>
        <Name Value="EAbort"/>
      </Item1>
      <Item2>