Forum Replies Created
-
AuthorPosts
-
HeDiBoParticipant'Support' wrote:
Thank you, I see and I will improve it soon.
That's great!
The application is very near to delivery. Can you give an indication of the time frame to improve this?
HeDiBoParticipant'Support' wrote:Before showing of hint the OnShowHint event called.
You can create and initialize the own frame with some information in this event.
Frame will not be painted on the hint window, visible controls will be shown only.
So, you can place any images and labels on this frame, initialize them and they will be shown on the hint window.
Otherwise, you can output any own information on the skinned hint window with using of the OnPaint event.
Thanks for your info. I have it working now.
But the pictures in the frame will not show with the right transparency.
If the frame is used on a normal form, the transparency is OK.
If the frame is created on the fly in the OnShowHint event, the transparency is not very good.
For your info, this is the frame: [attachment=7760:HintFrame.rar]
The icons are 8 bit gray scale with an alpha channel transparency.
HeDiBoParticipant'Support' wrote:Hello!
We have several ways to do it:
1) Make a frame with any graphic controls and place this frame into the hint window.
Example may be found in this demo: http://www.alphaskin…/alphahints.zip
2) Paint in the hint window directly using the TsAlphaHints.OnPaint event.
If you need I can make a special demo for you, but time is required.
If I understand correctly, you create a special TFrame containing the information as a bitmap. Then you set the OnShowHint event in the TsAlphaHint control. In the event procedure you show the frame, if the hint control is the right one.
Although that will work, you will not see any Hint skinning any more.
My question was to generate a hint fully skinned, but with small images on certain points in the text. Is that possible?
Thank you for your efforts so far :a7:
HeDiBoParticipant'Support' wrote:This is a my mistake, here is the file with UpdateCalendar procedure.
Thanks, I already corrected this myself.
HeDiBoParticipantTo my dismay, now DoubleClick doesn't work anymore 😡
If OnMouseUp is defined, it does not fire (which is standard behavior), but…
if OnMouseUp is undefined, it fires TWO TIMES!
The problem is in this definition:
Code:TsCalendGrid = class(TDrawGrid)
private
FOwner: TsMonthCalendar;
procedure WMSize (var Message: TWMSize ); message WM_SIZE;
procedure WMMouseActivate(var Message: TMessage); message WM_MOUSEACTIVATE;
protected
procedure WndProc(var Message: TMessage); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure DblClick; override; // This should be removed again: double click already works on the owning TsMonthCalendar
publicHeDiBoParticipantIn 10.30 the function SysColorToSkin is almost what you would expect.
Only, if the skinmanager used is not active, the color is still translated. That's not the way it should work.
You see, if you want to write a program that will work OK with or without skinning, the function SysColorToSkin(clBtnShadow) should return the value clBtnShadow if the skinmanager is not active.
I think, the code for SysColorToSkin should be this:
Code:if ASkinManager = nil then
ASkinManager := DefaultManager;if ( ASkinManager nil ) and
( ASkinManager.Active ) then // Added by DB
case AColor of
clScrollBar, clBackground, clBtnFace, clAppWorkSpace, clMenu:
.
.HeDiBoParticipant'Support' wrote:Thank you, I will change it.
Solved in 10.30 :a3:
HeDiBoParticipantFunction MousePosToDate works like a charm :a3:.
The property CellDate should produce the same result. But because the caller does not know about the grid's borders, it is a week off. I think it could be removed again, because it serves no purpose this way.
See what I mean in this project: [attachment=7739:acCalendarMouseUp.zip]
HeDiBoParticipant'Support' wrote:Yes, you are right, CellDate will be added.
I edited my post, because it returned a String i.s.o. a TDateTime
HeDiBoParticipant'Support' wrote:You have uploaded the ACBPD.dfm file instead of ACBIB.dfm, please check.
Sorry, here is the correct ZIP file: [attachment=7735:acBtnImageBug.zip]
HeDiBoParticipant'Support' wrote:Hi!
The protected GetCellDate function exists there, I can move it to the “public”:
Code:function GetCellDate(ACol, ARow: Integer): TDateTime;You already have this public property:
Code:property CellText[ACol, ARow: Integer]: string read GetCellText;So, analogous, you could add this:
Code:property CellDate[ACol, ARow: Integer]: TDateTime read GetCellDate;Looks even better, don't you think?
HeDiBoParticipant'Support' wrote:Ok, the MousePosToDate function will be added )
Maybe it should be done in two functions:
MouseToCell from the underlying TsCalendarGrid is already there. All we need therefore is CellToDate. For that all you have to do is make the private function GetCellDate part of a new property “CellDate” (a read-only property). That was probably your plan from the beginning, considering the analog CellText property.
HeDiBoParticipantThat would be very easy:
Code:function ColorToSkin(AColor: TColor): TColor;
begin
if not skinned then Result := AColor
else begin
// Here you would do your stuff
end{if};
end;So I would call the function like this: ColorToSkin(clBtnShadow) and it would return clBtnShadow if not skinning or your equivalent, theme oriented color if skinning was active.
HeDiBoParticipant@mierlp: You're placing this issue in the wrong forum. Bugs should be added here: http://www.alphaskin…php?showforum=1
It's not a problem for the developers, but it will become a problem for you, if you would like other forum members to react: they will not find the issue you brought up.
HeDiBoParticipant'Support' wrote:I have added changes into the v10 also. I hope to release the v10.30 soon.
Great, thanks :a3:
Will that also include function(s) to get from the X and Y coordinates of OnMouseUp and OnMouseDown to cell coordinates and then to date?
I want to implement a right click event in a calendar, much like the OnDblClick event.
HeDiBoParticipant'Support' wrote:Hi!
I see this problem and I will solve it in the nearest release, thanks for the messages.
I am very sorry to finding out that you corrected this bug in the beta release 11 but not in the stable release 10.
HeDiBoParticipant'Support' wrote:I can make a function for colors converting, like the ColorToRGB function.
Something named like ColorToSkin(AColor: TColor)… Is this what you meant?
Wouldn't that be a much too complicated function? Do you really know how to convert clRed and clMoneyGreen to a color according to the skin?
I would be glad to have a conversion for the standard colors of a themed Windows app. Like clBtnShadow and clInactiveCaptionText. If you mean you can provide a conversion for these kind of colors, that would be great.
HeDiBoParticipantI understand.
But accepting parameters that cannot be handled properly, may be not a good idea.
In the meantime, I made my own message routine: [attachment=7708:Message.zip]
The function Cardinality used goes like this:
Code:function Cardinality(var Tar; Size: Integer): Integer;const // nibble table
// Number of bits for values:0 1 2 3 4 5 6 7 8 9 A B C D E F
Ca: array[0..15] of Integer=(0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4);
var
ab: TByteArray absolute Tar;
j: integer;
begin// Returns the number of bits set in the Size bytes starting from Tar.
Result := 0;
for j := 0 to Size – 1 do begin
Inc( Result, Ca[ab[j] and $0F] + Ca[ab[j] shr 4]);
end;
end;Hope it is usable.
HeDiBoParticipant'Ronaldo wrote:I believe you can use the day, month & year fieds to get the current date:
Thank you for your efforts. Much appreciated.
In the OnMouseUp and OnMouseDown event the X and Y coordinates in the parameters do not reflect the current date. Clicking on a date with the right mouse button means the current day, month and year properties are not updated to the mouse position so only X and Y are the values usable. Therefore there should be an easy way to get from (X,Y) to the date clicked.
HeDiBoParticipantWhen OnMouseUp and OnMouseDown work, there should be an easy way to get from the X,Y coordinates to the pertinent date.
-
AuthorPosts