|
|
(5 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | TMemo widgetset is implemented over NSTextView and NSScrollView
| + | #REDIRECT [[Cocoa Internals/Text Controls]] |
− | | |
− | ==NSTextView==
| |
− | By default NSTextView is designed to be constantly word-wrapped. Disabling word-wrapping could be quite complicated from a start due to odd-default values chosen by Apple, as well as complex (yet flexible) Text Layout system.
| |
− | * NSTextView is a "cocoa" control, however it's not drawing the text by it's own it's also using:
| |
− | * NSTextContainer. Both NSTextContainer and NSTextView settings influence on how the text is rendered in the end.
| |
− | | |
− | The example shows, of creating NSTextView that automatically resizes itself horizontally.
| |
− | However NSTextView doesn't provide its own scrollbars, thus no scrollbars would be seen.
| |
− | <source lang="delphi">
| |
− | procedure TForm1.FormShow(Sender: TObject);
| |
− | var
| |
− | txt : NSTextView;
| |
− | begin
| |
− | txt := NSTextView.alloc.initWithFrame(NSMakeRect(10,ClientHeight-10-50,50,50));
| |
− | | |
− | txt.setFont(NSFont.systemFontOfSize(NSFont.systemFontSizeForControlSize(NSRegularControlSize)));
| |
− | | |
− | // making the maximum size - maximum!
| |
− | // 10000000 is a "constant" could be found in Apple documentation
| |
− | txt.setMaxSize( NSMakeSize(10000000, 10000000));
| |
− | // preventing textContainer from following the width of NSTextView
| |
− | txt.textContainer.setWidthTracksTextView(false);
| |
− | // making TextContainer large enough.
| |
− | txt.textContainer.setContainerSize ( NSMakeSize( 10000000, 1024));
| |
− | // making NSTextView to resize automatically to the text boundries (max width)
| |
− | txt.setHorizontallyResizable(true);
| |
− | | |
− | NSView(Self.Handle).addSubView(txt);
| |
− | end; </source>
| |
− | | |
− | The next step is actually to embed NSTextView into ScrollView (as a documentView).
| |
− | | |
− | ===Inserting into Scroll View===
| |
− | The process is straight-forward - allocate scroll view, use NSTextView as it's document view
| |
− | | |
− | ==See Also==
| |
− | *[[Cocoa Internals]]
| |
− | *[https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/TextStorageLayer/Tasks/TrackingSize.html Tracking the Size of a Text View] - Apple's official documentation explains how text size is tracked between NSViewText and NSViewContainer
| |
− | *[https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/TextUILayer/Tasks/TextInScrollView.html Putting an NSTextView Object in an NSScrollView] - Apple's official documentation on how to place NSTextView into a scrollview.
| |
− | *[https://stackoverflow.com/questions/3174140/how-to-disable-word-wrap-of-nstextview How to Disable Word-Wrap of NSTextview] - stackoverflow discussion of the problem.
| |
− | [[Category:Cocoa]]
| |