tvplanit: Improved rendering of VpContactGrid.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6481 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2018-06-09 13:23:44 +00:00
parent ad07af3511
commit 2c923b154e
2 changed files with 60 additions and 9 deletions

View File

@ -183,6 +183,9 @@ type
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
function GetContactIndexByCoord(Pnt: TPoint): Integer;
function GetDisplayEMail(AContact: TVpContact): String;
function GetDisplayEMailField(AContact: TVpContact): String;
procedure SetDisplayEMail(AContact: TVpContact; AEMail: String);
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure MouseEnter; override;
procedure MouseLeave; override;
@ -1331,7 +1334,7 @@ begin
end;
{ edit email }
if field = 'EMail' then begin
cgInPlaceEditor.Field := 'EMail1';
cgInPlaceEditor.Field := GetDisplayEMailField(FActiveContact); //'EMail1';
cgInPlaceEditor.Move(EMailRect, true);
Canvas.DrawFocusRect(Rect(EMailRect.Left - TextMargin,
EMailRect.Top, EMailRect.Right + 3, EMailRect.Bottom + 3));
@ -1409,7 +1412,8 @@ begin
{EMail}
else if cgInPlaceEditor.field = 'EMail' then begin
if cgInPlaceEditor.Text <> FActiveContact.EMail1 then begin
FActiveContact.EMail1 := cgInPlaceEditor.Text;
SetDisplayEMail(FACtiveContact, cgInplaceEditor.Text);
// FActiveContact.EMail1 := cgInPlaceEditor.Text;
FActiveContact.Changed := true;
end;
end
@ -1819,6 +1823,39 @@ begin
Invalidate;
end;
function TVpContactGrid.GetDisplayEMail(AContact: TVpContact): String;
begin
if AContact = nil then
Result := ''
else begin
Result := AContact.EMail1;
if Result = '' then Result := AContact.EMail2;
if Result = '' then Result := AContact.EMail3;
end;
end;
function TVpContactGrid.GetDisplayEMailField(AContact: TVpContact): String;
begin
if (AContact.EMail1 <> '') then
Result := 'EMail1'
else if (AContact.EMail2 <> '') then
Result := 'EMail2'
else if (AContact.EMail3 <> '') then
Result := 'EMail3'
else
Result := 'EMail1';
end;
procedure TVpContactGrid.SetDisplayEMail(AContact: TVpContact; AEMail: String);
begin
if (AContact.EMail1 <> '') then
AContact.EMail1 := AEMail
else if (AContact.EMail2 <> '') then
AContact.EMail2 := AEMail
else if (AContact.EMail3 <> '') then
AContact.EMail3 := AEMail;
end;
{$IF VP_LCL_SCALING = 2}
procedure TVpContactGrid.ScaleFontsPPI(const AToPPI: Integer;
const AProportion: Double);