DateTimePicker Alignment in Delphi 7 - delphi

My problem is following: I need to align text inside DateTimePicker component to center. This component however doesn't have Alignment property. This component comes from TCommonCalendar, which also doesn't have this property. Can anybody think of possible solution?
Thank you,
Tofig Hasanov

There are many alternatives to TDateTimePicker out there, for a reason: They can the stuff that TDateTimePicker cannot.

I doubt it is possible.
Behind the scenes, when you create a TDateTimePicker, a window common control SysDateTimePick32 get's created. It looks like it does not allow it's Style to be changed from ES_LEFT to ES_CENTER (or ES_RIGHT for that matter).
I hope to be proven wrong.

Related

Show TEdit in FireMonkey has an error in it with red border

I'm working on a mobile application where the user needs to login.
The server is returning me if the e-mail is invalid, or subdomain or password and I want to focus the TEdit that has the error. Focus is easy but I would also like to mark the edit as invalid like many web applications do.
What is the best way to do this is a consistent way so it will look correct on both Android as iOS. Is something like this built-in? I'm using Delphi 10.1
Loki's suggestion is a possible solution.
A solution which takes advantage of FMX features would be to use a TGlowEffect for the red frame around the TEdit and then use a TPopup to create the hint.
the style it's just a nightmare in 99% of the case, so i strongly suggest to not touch it. i will instead put a Trectangle as the background of the Tedit, put the Tedit as Transparent (you already have this style ready in the stylelookup in the object inspector), and then simply set the stroke.color of the trectangle.
i m working also right now on a 100% native Tedit on ios/android/windows i guess i will finish this code in around 1 week.

How to show placeholder in TEdit

Is there any way to add a placeholder text to an edit?
My only idea is to always manually set the color and the text of the given edit in its OnChange event, but it seems to be a bit tedious to me.
Any other suggestions?
What you are looking for is handled by the TEdit.TextHint property. Note that it only works on XP and later with Visual Themes/Styles enabled for the app.
In case anyone got here like me through a web search, in cross-platform versions of Delphi using FMX, the placeholder display is handled by TEdit.TextPrompt.

Delphi 6 TRadioGroup with custom TRadioButton controls in it?

I'm using Delphi 6 (actualy BCB6 but nobody uses that, so Delphi advice is fine). Some controls let you create a custom class of items they can contain, like TListView. Does TRadioGroup have a way to do this without recreating most of the functionality from scratch? I have my own custom TRadioButton derived controls I created that have a custom look, and I'd like all of my radio buttons to match.
I'm not seeing anything possible looking at the source code in extctrls.pas, and not finding anything online, but figured I'd ask because it is late and I might have overlooked something.
TRadioGroup has no such functionality. What you can do is use a TGroupBox to contain your special controls.

Delphi Application.HintColor

In Delphi 2010 (don't know about other versions) Application.HintColor seems to have no effect when running on Windows 7. On XP it gives the desired color. Any workarounds for this?
HintColor is like some of the other *Color properties in the VCL in that if you are running a themed application on a themed OS, they may be ignored when painting the control. Hints are a little different, because for them it's Vista or above, not XP or above. You can see this if you look at THintWindow.Paint in Controls.pas - it specifically paints the Vista gradient background if it's Vista and if themes are enabled.
This is normally a good thing, because you want your application to fit the look-and-feel of the OS and the user's preferences.
If you really want to override this, you will need to:
Subclass THintWindow
Get your application to use this new hint class when showing hints
In this class, override the painting methods to draw as you wish
Create a new hint class descending from THintWindow somewhere (more on what to implement below.) To get the application to use your new class for hints, assign an event handler to TApplication.OnShowHint (the easiest way to do this is via a TApplicationEvents component on your main form) and change the HintInfo parameter's HintWindowClass field to be your new class.
In your new hint class, you will need to override Paint and NCPaint. NCPaint will paint the border, and you will want to paint a non-themed border (probably using DrawEdge.) Change Paint to fill in the background with your colour of choice, and then draw text using DrawText in the hint's rectangle with appropriate text wrapping and alignment flags. If you look at the VCL code closely you can see a couple of rectangle offsets hardcoded, and you probably want to mimic these to get the same rectangles in your code as the VCL uses.
You can make all sorts of interesting variations of hints using this technique. One I made recently changed the painting so it drew a bold caption and then had other information under that, for example.
Finally: why are you setting the colour? Is it to warn the user of something or provide some other feedback? If so, consider using more than the colour - you can change anything you want about a hint using this technique. Try painting a warning icon or using rich-formatted text instead. I'd recommend you try to keep to the general theme look, and code tweaks to the themed painting, not overriding it entirely, because unless there's a very good reason you should try to keep to the OS / look the user has chosen.
No, not directly. If you have the runtime themes enabled it will take the system color for the hint. (IOW, the hint will be 'themed'). It is like setting a color for a button with the themes enabled (given that you can do this).
However you can use other 'hint' engines. For example you can use TjvBallonHint and/or TjvDesktopAlert (perhaps in conjunction with TjvDesktopAlertStack) from JEDI's JVCL which is free. There are also other (free & paid) alternatives. Also, if you want you can implement your own hint window.
HTH
Turning the 'enable runtime themes' off makes it work.
In Delphi 2010, you have TCustomHint class. You can derive a new class from it which draws a new type of hint.
You can assign your new class to CustomHint property of your forms or any other controls, and Delphi will use your custom hint class for showing hint for that control.
You can check source code of TBalloonHint class which is a sample TCustomHint descendant in Controls.pas

Dynamic Splitter Panes

How would I go about implementing dynamic/docking splitter panes in a vb.net app similar to visual studio?
Check out the following demo at ZettaCube, their WebDock component seems to have functionalities close to VS.NET, especially docking and auto-hide.
http://www.zettacube.com/
DockPanel is one painless & open source way to do it.
DockPanel is for WinForms only. Seems that the WebDock from zettacube above is the only solution for now.
Not easily is the short answer.
A high level idea would be to define some regions using divs or a table and using your js framework of choice make these elements resizeable. that gets you the splitter aspect.
The docking will have to use absoluting positioned elements that you can drag and drop and if you are currently over a docking element, reposition the element to be docked to inside the docking element and change it's position back to normal. When you want to drag it out you will change it's positioning back to absolute
Also, this is not easy to do and will take a long time and still probably not work correctly. Sorry to sound pessimistic though.
I would say use some of the already available controls out there.
I use the control library from Janus Controls, but there are dozens out there to choose from.
http://www.janusys.com/controls/
Agree with Nick, this is not something you just throw together yourself.

Resources