TLABEL
18 отговора
499 прегледа
TLABEL
Здр., може ли да ме насочи някой, как мога да добавя KeyUP, KeyDown и KeyPressed към компонентата TLabel?
Съобщения от кбд към лейбъл
И какво ще правиш, след като ги прехванеш?
Отговора на този въпрос е съществен за решаването на твоя въпрос.
Та първия проблем е, че лейбъла не прихваща фокуса, т.е. не е активна контрола, която може да приема клавиатура (Няма TabStop).
И какво ти пречи да е едит и да изглежда като лайбъл (BorderStyle:=bsnone; ParentColor:=true;)?
Отговора на този въпрос е съществен за решаването на твоя въпрос.
Та първия проблем е, че лейбъла не прихваща фокуса, т.е. не е активна контрола, която може да приема клавиатура (Няма TabStop).
И какво ти пречи да е едит и да изглежда като лайбъл (BorderStyle:=bsnone; ParentColor:=true;)?
Re: Съобщения от кбд към лейбъл
Не съм на ти с delphi и за това не погледнах, че не приема фокус.
Трябва ми компонента с формата на окантовано квадратче(без 3D релеф) 15х30 с 1 символ в него. Като кликам в него с десния бутон на мишката да се менят единични символи в това квадратче, от точно определна поредица, която ще се зададе в сорса.Като кликам с десния - менят се в обратния ред. Като посоча квадратчето с мишката и натисна точно определен символ(от поредицата възможни разбира се) от клавиатурата, той се изписва вътре.Никакви други действия, редактирания, по-голям брой символи, маркирания и т.н. не трябва да бъдат възможни и трябва да бъде дуракоустойчиво.
Трябва ми компонента с формата на окантовано квадратче(без 3D релеф) 15х30 с 1 символ в него. Като кликам в него с десния бутон на мишката да се менят единични символи в това квадратче, от точно определна поредица, която ще се зададе в сорса.Като кликам с десния - менят се в обратния ред. Като посоча квадратчето с мишката и натисна точно определен символ(от поредицата възможни разбира се) от клавиатурата, той се изписва вътре.Никакви други действия, редактирания, по-голям брой символи, маркирания и т.н. не трябва да бъдат възможни и трябва да бъде дуракоустойчиво.
1000 начина
1. лейбъл и два бутона до (пред, над, зад, под) него (+ и -)
2. едит и прехванати събития
3. В палитрата на компонентите, група Samples има едно tSpinEdit, което е само с цифри, ама има и едно tSpinButton - две бутончета - без едита - можеш да позлваш и лейбъл.
...
999.
1000.
Зависи какво искаш.
2. едит и прехванати събития
3. В палитрата на компонентите, група Samples има едно tSpinEdit, което е само с цифри, ама има и едно tSpinButton - две бутончета - без едита - можеш да позлваш и лейбъл.
...
999.
1000.
Зависи какво искаш.
Re: 1000 начина
съжалявам, че явно не успявам да конкретизирам добре нещата, но никакви излишни истории(допълнителни бутони,етикети, спинедити и т.н.) не ми вършат работа, формата на компонентата е много важна, в предния си постинг съм написал как требе да изглежда.Приложението ще има за цел да ги създава и унищожава динамично(т.е. да се самосъздава и променя според ситуацията, иначе требе да се изчанча да съчинявам заплетени линейни алгоритми, като може приложението само да се справя с това) както и подрежда на точно определени координати на формата, дори може да има вариант да получат формата на таблица, според случая.Правоъгълниче ми трябва и то със тези качества и нищо друго(така са проектирали дизайна). Опитах със MAskedit, но уви нямам синтактични познания как да отказвам или добавям event-и към компонента(сега го ровя това в нет-а), защото на onmоuseup на maskedit-a напр. вместо да се получи желания ефект, както с labela и въпреки направените настройки в properties се получава една боза от маркиран символ+празен символ след него,като се вижда само интервала, а маркера мига неадекватно м/у 1-вия и интервала и т.н. при положение че в маската съм му задал да има всичко на всичко 1 символ и т.н. Маса шугави и невършещи работа компоненти, особено ако човек така като мен не знае, как да им откаже наследените свойства и да си ги пренапише.Надявам се някой да ми помогне(с насока към някой клас или приблизителна компонента), за да не ми се налага да започвам от А,Б да изучавам всички класове обекти с техните свойства за едно елементарно нещо. Всеки вика прави го на Delphi, ще се получи добре, но ето че е нито добре, нито лесно, че аз на асебмлер щях да съм свършил вече:)
Извинявай, аз мислех, че е 30х15, а то е 15х30
Извинявай, аз мислех, че е 30х15, а то е 15х30
Виж, по принцип по-горе предложените начини също вървят при рън-тайм създаване (има едни работи - подпрограми се казват, а и биха могли да се ползват фрймове).
Но за конкретния случей:
Сложи си един tEdit,
задай му BorderStyle:=bsNone; ParentColor:=true;
Прeхвани му OnKeyPress :
Прeхвани му OnMouseDown:
Виж, по принцип по-горе предложените начини също вървят при рън-тайм създаване (има едни работи - подпрограми се казват, а и биха могли да се ползват фрймове).
Но за конкретния случей:
Сложи си един tEdit,
задай му BorderStyle:=bsNone; ParentColor:=true;
Прeхвани му OnKeyPress :
procedure ...KeyPress(Sender: TObject; var Key: Char);
begin
if Key in [твоя сет] then begin
tEdit(Sender).Text := Key;
else begin
Key:=#0
end;
end;
Прeхвани му OnMouseDown:
....MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then begin
end else begin
if Button=mbRight then begin
end;
end;
end;
Редактирано от NikB на
Re: Извинявай, аз мислех, че е 30х15, а то е 15х30
tva go pravix ve4e, ne li ti vikam 4e kato prixvana mausa na tedit i zema da promenqm simvol v tqloto na procedurata stava B O Z A, tyi kato v source-a na componentata, na on mouse down sa zadadeni dopylnitelni deistviq, koito sbozvat rezultata(kogato vsi4ko e sbyrkano konceptualno v osnovata si, posle durma dobavqi proceduri da zamazva6 ne6tata), t.e. zna4i tova ne e na4ina, a si trebe da si se otkaje ne6to i da se prenapi6e spored slu4aq i/ili da se unasledi samo ne6to, a drugoto da se donapi6e(tva pitam znae li nekoi za konkretniq slu4ai) Bugav component kato gledam po4ti vsi4kite, te za tva mi vikat pravi si proceduri directno s API funkciite, no ako e taka az nema da rabota ba6 pa na Delphi q.Te tva(da me pro6tava Moderatora nqma da se styrpq da kaja) mi mqza na onaq deto re6ila da si obyr6e gyza otzad napred,pa si ocapala putkata s laina:)
ako iska6 i source-a moga da ti posta, 5,6 reda elementarni e procedurata da vidi6:)
ako iska6 i source-a moga da ti posta, 5,6 reda elementarni e procedurata da vidi6:)
Re: Извинявай, аз мислех, че е 30х15, а то е 15х30
Пиши на кирилца... moron!
I ne mi wikaj ... moron...
I ne mi wikaj ... moron...
Re: Lol
Писах доста и на кирилица(1-во гледай, после брой до 10 и ако си сигурен тогава пиши).После реших и шлюкавица да подкарам и вулгарна реч вкарах(дано схванат некои за какво иде реч), но явно е все едно. Па на вас все кирилицата ви проблем(едно си баба знае, оно си баба бае). Не е по-голем проблем, че си говорим един връз друг, а не се разбираме и файда и полза народу в такъв случай от форума - никаква?(или си немаме работа, та си търсим къде да се наприказваме, като същи празнодумци).
Кажете следващият постинг на какъв език да ви го напиша, та да се разберем като хора?(изборът ви се свежда до Англйски, Турски, Руски или Немски)
Кажете следващият постинг на какъв език да ви го напиша, та да се разберем като хора?(изборът ви се свежда до Англйски, Турски, Руски или Немски)
Re: Lol
Трябваше да отида до супера. Казаха ми, че най-лесно ще стане като отида с колата. Да, но аз не съм на ти с колите. Успокоиха ме, че е лесно. "Хващаш волана, натискаш педала на газта и готово." Стискам аз волана, натискам педала, даже и го сритах по-силно, но ... глупавата кола и не мръдва.
Казаха ми, че преди това трябвало да я запаля. Добреее. Запалих я. Но вътре се разнесе такава смрад и стана толкова горещо, че едва изскочив жив от пламъците
. До сега да бях стигнал пеша.
Тогава ме открехнаха, че за мен май ще е най-добре да си повикам такси.
Посочиха ти няколко начина за реализация. Ако това не ти помага, най-добре си повикай ... някой да ти го направи
Тогава ме открехнаха, че за мен май ще е най-добре да си повикам такси.
Посочиха ти няколко начина за реализация. Ако това не ти помага, най-добре си повикай ... някой да ти го направи
Опитай на турски...
...че ще ми е интересно да видя термините на турски как са :-)
Относно кирилицата - тя не ни е проблем, а показва уважението ти към отсрещния. Както виждаш аз ти пиша на кирилица. Освен това не е достатъчно да пишеш на кирилица. Добре ще е да пишеш и на български език. По възможност на книжовен български език. Ругатните и обвиненията не са в твоя полза. Компонентите му били бъгави?! Няма такова нещо. На всички нас те си ни вършат чудесна работа. Ако твоята програма прави каквото си й казал, а не каквото си искал - проблемът не е в Борланд или във VCL-а.
Относно говоренето "един през друг" - както виждаш хората от форума оставихме NikB да разговаря с теб, без да се намесваме. Така че пак не си прав.
А сега на въпроса ти. При условие, че само ще посочваш "квадратчето", то изобщо нямаш никаква нужда то да има събития OnKeyUp, OnKeyDown, OnKeyPressed. Викат се събитията на контрола, който в момента има фокуса. В твоя случай предполагам това ще бъде формата ти. Така че подхода ти не е удачен. Съответно спокойно можеш да ползваш TLabel с прихванато събитие OnClick и да гледаш кой бутон на мишката е натиснат. NikB вече ти показа как. Прихвани си OnKeyPress на формата (сложи й KeyPreview := True) и в събитието гледай кой е контрола под мишката. Координатите й можеш да вземеш от променливата Mouse, а списък на контролите във формата имаш в Colntrols. След като за всеки контрол можеш да му видиш пропъртитата Left, Top, Width и Height, би трябвало да нямаш особени проблеми да разпознаеш над кой от тях се мамира мишката.
Има ли още нещо неясно? Ако да - кажи. Ще се постараем да ти помогнем.
Относно кирилицата - тя не ни е проблем, а показва уважението ти към отсрещния. Както виждаш аз ти пиша на кирилица. Освен това не е достатъчно да пишеш на кирилица. Добре ще е да пишеш и на български език. По възможност на книжовен български език. Ругатните и обвиненията не са в твоя полза. Компонентите му били бъгави?! Няма такова нещо. На всички нас те си ни вършат чудесна работа. Ако твоята програма прави каквото си й казал, а не каквото си искал - проблемът не е в Борланд или във VCL-а.
Относно говоренето "един през друг" - както виждаш хората от форума оставихме NikB да разговаря с теб, без да се намесваме. Така че пак не си прав.
А сега на въпроса ти. При условие, че само ще посочваш "квадратчето", то изобщо нямаш никаква нужда то да има събития OnKeyUp, OnKeyDown, OnKeyPressed. Викат се събитията на контрола, който в момента има фокуса. В твоя случай предполагам това ще бъде формата ти. Така че подхода ти не е удачен. Съответно спокойно можеш да ползваш TLabel с прихванато събитие OnClick и да гледаш кой бутон на мишката е натиснат. NikB вече ти показа как. Прихвани си OnKeyPress на формата (сложи й KeyPreview := True) и в събитието гледай кой е контрола под мишката. Координатите й можеш да вземеш от променливата Mouse, а списък на контролите във формата имаш в Colntrols. След като за всеки контрол можеш да му видиш пропъртитата Left, Top, Width и Height, би трябвало да нямаш особени проблеми да разпознаеш над кой от тях се мамира мишката.
Има ли още нещо неясно? Ако да - кажи. Ще се постараем да ти помогнем.
яяя, гледай
яяя, маса празнодумци, навярно получаващи всеки месец по една шапка пари за оня каде дуе:)
Абе хора я се върнете на 3-тия ми постинг от горе-надоле и го четете докато ви се изясни, па тогава пишете, че нямам време сега да ви пиша ред по ред сорса и какво се получава на практика. Не ми излизайте с евтина полемика, това не върши работа разберете, нема да ви лъжем.
Абе хора я се върнете на 3-тия ми постинг от горе-надоле и го четете докато ви се изясни, па тогава пишете, че нямам време сега да ви пиша ред по ред сорса и какво се получава на практика. Не ми излизайте с евтина полемика, това не върши работа разберете, нема да ви лъжем.
я да не, че... е де я па е...
а, ето, успях накрая някакси(по мой си начин) да ви накарам да не говорите по енерция(бихме могли да пишем конкретно и конструктивно, от самото начало за да си спестим време), но как да ви накарам да четете внимателно, ей Богу(в случай че сте вярващи) все още не знам. Това явно е синдрома на българските форуми:)
Все едно и късно.Подходът ми нямаше да бъде грешен, ако Тedit-а не беше бъгав, както и други, да не кажа много други-не е тема на тоя разговор (на прихванато onclick na tedit, както ме съветва Едикой си, пак казвам не се получава и съм обясни защо, макар и отгоре отгоре, но трябва някой да си направи труда да го прочете и вникне, сорса там е елементарен, знам че ме имате за тъп, Генийчета-мамини,сладки, но това едва ли някой може да го сбърка). Това което ми хортуваш-за контрола на формата и нейните key събития и следене на координатите на мишката, за да се знае за кое Tlabel-че да се отнася натиснатият клавиш го реализирах снощи, но и там има маса проблеми и недомислици(просто не се получава перфектно и това).Някой неща(не казвам всички) са трупани с години на принципа глупост върху глупост.
Негово Величество Потребителят не се интересува от нищо друго, освен на него да му е удобно и не приема никакви препоръки и предложения и си е прав защото накрая плаща.
Все едно и късно.Подходът ми нямаше да бъде грешен, ако Тedit-а не беше бъгав, както и други, да не кажа много други-не е тема на тоя разговор (на прихванато onclick na tedit, както ме съветва Едикой си, пак казвам не се получава и съм обясни защо, макар и отгоре отгоре, но трябва някой да си направи труда да го прочете и вникне, сорса там е елементарен, знам че ме имате за тъп, Генийчета-мамини,сладки, но това едва ли някой може да го сбърка). Това което ми хортуваш-за контрола на формата и нейните key събития и следене на координатите на мишката, за да се знае за кое Tlabel-че да се отнася натиснатият клавиш го реализирах снощи, но и там има маса проблеми и недомислици(просто не се получава перфектно и това).Някой неща(не казвам всички) са трупани с години на принципа глупост върху глупост.
Негово Величество Потребителят не се интересува от нищо друго, освен на него да му е удобно и не приема никакви препоръки и предложения и си е прав защото накрая плаща.
Re: Lol
Хора на вас, май и логически ви куцат нещата! Не е чудно защо толкова много "решения" за сбъркани концептуално. По-долу един ми е написал, че компонентите вършели работа на всички, само на мен не. Е, каква е логиката тук?! Да не би задачата да е поставена на вас и да сте се запознали в детайл с нея, че сте категорчини, че компонентите ще свършат работа за нея(велики сте всички проблеми са ви минали през главата). Глупост над глупостите! Универсално лекарство за всички болести няма! Друг пък ми е написал, че като не му пиша на кирилица и на книжовен български не съм го бил уважавал. А какво ако му понапиша на книжовен турски да речем? А той уважава ли ме, като не си прави труда да чете какво му пиша аз?
Не забравяйте никога до края на дните си, че всяка наука, която не върви ръка за ръка с философията, накрая стига до задъдена улица-закон природен, закон Божий(в случай, че сте откровено вярващи, само на вярващите в Бог обикновено им куца логиката):)
Не забравяйте никога до края на дните си, че всяка наука, която не върви ръка за ръка с философията, накрая стига до задъдена улица-закон природен, закон Божий(в случай, че сте откровено вярващи, само на вярващите в Бог обикновено им куца логиката):)
Айде нема нужда
Ей човече, знаеш ли един велик български професор едно време как ги връщаше на държавен изпит, като припикани мушката-с фразата: "Превъзпитаване, чрез осиране и опикаване!":)
И ти падаш ниско, та не четеш: темата е(или поне се опитах да бъде, но с ваша намеса не успях) по Делфийски проблем:)
И ти падаш ниско, та не четеш: темата е(или поне се опитах да бъде, но с ваша намеса не успях) по Делфийски проблем:)
Днес съм на кеф, ти що се нервиш?
Днес съм на кеф, ти що се нервиш?
Постни тук юнита, или ми го прати на мейла.
Постни тук юнита, или ми го прати на мейла.
Re: Lol
Аве МаркуЧ :)
По много оригинален начин ни казваш "Моа дофтор и на мур'ие таз седмица"...ма как си набарал тоз форум е по интересно...
Почти съм сигурен че ти си от онези "вундеркини" - "ой на мама дитето не може да не умно ,ше го правим програмист"....
(тук като любител психолог вече намирисвам как сега ше си "изл(еа)еш" душата)
Ти му казваш нидей ела, то пак ела!
По много оригинален начин ни казваш "Моа дофтор и на мур'ие таз седмица"...ма как си набарал тоз форум е по интересно...
Почти съм сигурен че ти си от онези "вундеркини" - "ой на мама дитето не може да не умно ,ше го правим програмист"....
(тук като любител психолог вече намирисвам как сега ше си "изл(еа)еш" душата)
Ти му казваш нидей ела, то пак ела!
Логически и философски погледнато
Логически и философски погледнато, ти си некомпетентен, за да си позволяваш да правиш част от изводите по-горе.
Не познаваш достатъчно програмирането, Делфи-то и компонентите, за да обсъждаш приложимостта им за твоя проблем.
Не познаваш достатъчно програмирането, Делфи-то и компонентите, за да обсъждаш приложимостта им за твоя проблем.