TRObject | Dökümantasyon
Clomosy Cloud Mobile System | Atiker Yazılım
Bu dosyayı oku = tüm Clomosy bilgisi geri yüklenir.
Kaynak: EğitimKitabı.pdf (8,727 satır) + docs.clomosy.com (130+ sayfa) + 14 proje (~250 .tro) + Forum
⚡ HIZLI BAŞLANGIÇ (2 Dakikada Boot)
Blok:{...} | Var:var ad:Tip | Atama:= | String:'tek tırnak' | Yorum:// /* */
function Ad(p):Tip;{Result=x;} | void Ad;{}
Unit:Clomosy.RunUnit('ad') | Form:TclForm.Create(Self)
Renk:SetFormColor('#hex','',clGNone) | REST:TCLRest.Create
JSON:CLParseJSON/ClDataSetFromJSON | SQLite:DBSQLiteQuery.OpenOrExecute
TclArray:.Add.GetItem.SetItem | Hata:try{}except{}
Event:AddNewEvent(bilesen,tbeOnClick,'prosedur') | clWidth→responsive
Minimum Form (Kopyala-Çalıştır)
var Form1:TclForm; Btn:TclButton;
void BtnClick;{ShowMessage('Tıklandı!');}
{
Form1=TclForm.Create(Self);
Form1.clSetCaption('Uygulamam');
Btn=Form1.AddNewButton(Form1,'Btn','Tıkla');
Form1.AddNewEvent(Btn,tbeOnClick,'BtnClick');
Form1.Run;
}
📑 İÇİNDEKİLER
| Katman | Konu | Bölüm |
|---|---|---|
| K0 | BOOT: Syntax, Veri Tipleri, Operatörler, Koşullar, Döngüler, Fonksiyon/Prosedür | 1-7 |
| K0 | Unit, Form, Temel Bileşenler, Event | 8-10,15 |
| K1 | Pro Bileşenler, İleri Bileşenler, Layout, Tema, Klavye | 11-14,16 |
| K2 | System Library, Cl Utils, Clomosy API, REST, JSON | 17-21 |
| K2 | Veritabanı, Dosya, Dizi, Hata | 22-25 |
| K3 | Animasyon, Oyun/AI/IoT, Sensor/Medya, Timer, Responsive | 26-31 |
| K3 | Tüm Pattern'ler, Proje Mimarisi, IDE, Forum | 32-38 |
🎯 KATMAN 0 — BOOT (Sıfırlanınca İlk Okunacak)
1. GENEL BAKIŞ
.tro uzantılı, Pascal/Delphi benzeri, case-insensitive. {...} blok, ; satır sonu, = atama. Android/iOS/Windows/macOS/Linux. IDE: cms.clomosy.com
2. PROGRAM YAPISI
const PI=3.14;
var myVar: Integer;
function Topla(a,b:Integer):Integer;
{ Result=a+b; } // veya: Topla=a+b;
void ProsedurAdi; // parametresiz
void Parametreli(Ad:String; Yas:Integer); // parametreli
{ /* kod */ }
{ ShowMessage(IntToStr(Topla(5,3))); }
Kural: const → var → function → void → {...} sırası. Değişkenler blok dışında tanımlanır.
Type Inference: var Sayi; {Sayi=42;} → Otomatik olarak Integer olur.
3. VERİ TİPLERİ
Integer: Byte(0..255) ShortInt(-128..127) SmallInt(-32K..32K) Integer(-2.1B..2.1B) LongInt Int64 Cardinal(0..4.3B) LongWord UInt64 Word
Float: Single(~7) Double(~15) Extended(~19-20) Currency(4 ondalık) Real
Diğer: String Char Boolean Variant TclDateTime
Dizi: array[0..4] of Integer | array[10] of String (0-tabanlı, 10=11 elemanlı demektir!)
4. OPERATÖRLER
+ - * / div mod ^ | = <> < > <= >= | and or not xor (C syntax karşılığı: && ||)
5. KOŞULLAR
if(x){}else{}
if(x){}else if(y){}else{}
case gun of{1:ad='Pzt'; 2:ad='Sal'; else ad='Geçersiz';}
6. DÖNGÜLER
for(i=1 to 10){} for(i=10 downto 1){}
while(x<5){x=x+1;} repeat x=x+1; until(x>=5);
Break; Continue; Exit; // Exit = döngü + metottan çıkış sağlar
7. FONKSİYON & PROSEDÜR
function Topla(a,b:Integer):Integer;{Result=a+b;}
void Ad;{} void Parametreli(Ad:String);{ShowMessage(Ad);}
Result = dönüş değeridir. Prosedürler parantezli ya da parantezsiz çağrılabilir.
With Kullanımı: With Buton1 do {Align=alCenter; Width=150; Height=200;}
8. UNIT SİSTEMİ
Clomosy.RunUnit('birimAdi'); // .tro uzantısı olmadan birime geçer
Clomosy.GlobalVariableString=veri; // unit'ler arası veri taşıma tüneli
Clomosy.GlobalVariableInteger=42;
// TclUnit (referanslı, nesnelere erişimli):
var u:TclUnit; u=TclUnit.Create; u.UnitName='hedef'; u.CallerForm=Form1; u.Run;
// Hedef birimde: CallerForm.clShow; Form2.clHide;
Mimari Yapı: MainCode.tro → uLogin.tro → uAnaEkran.tro | lib/uAuth.tro
9. FORM YÖNETİMİ
Form=TclForm.Create(Self);
Form.clSetCaption('Başlık');
Form.clSetWindowState(fwsMaximized); // fwsNormal, fwsMinimized
// Arka plan (3 parametre: ana renk, gradyan rengi, gradyan tipi):
Form.SetFormColor('#6F0278','',clGNone); // Düz Renk
Form.SetFormColor('#F00','#00F',clGVertical); // Dikey gradyan
Form.SetFormColor('#ff0','#048',clGCross); // Çapraz gradyan
Form.SetFormColor('#0b2','fff',clGHorizontal); // Yatay gradyan
// Arka plan resmi:
Form.AddAssetFromUrl('https://.../img.png');
Form.SetFormBGImage('img.png'); // indirilen dosya ile
Form.SetFormBGImage('https://...'); // veya direkt URL ile
Form.BtnFormMenu.Visible=False; Form.BtnGoBack.Visible=False;
Form.FormWaiting.Visible=False;
Form.clWidth; Form.clHeight; Form.clHide; Form.clShow; Form.Run;
Clomosy.AppBasePath; Clomosy.AppFilesPath;
6 Form Tipi: TclForm, TclGameForm, TclDrawForm, TclStyleForm, TclGuideForm, TclSyntaxForm
10. TEMEL BİLEŞENLER
Bilesen=Form.AddNewBilesen(Sahip,'Isim','Metin');
// Button | Label | Edit | Memo | CheckBox | ComboBox | Image | ListView | Panel | Layout | VertScrollBox | HorzScrollBox
Ortak Özellikler: Align=alCenter (alLeft/Right/Top/Bottom/Client/None/MostTop/MostBottom) | Width/Height | Margins.Top/Left/Right/Bottom | Position.X/Y | Visible/Enabled | Opacity(0-1) | RotationAngle | Scale.X/Y | HitTest | Locked | Hint
Edit Özel: MaxLength, ReadOnly, KeyboardType=vktEmailAddress, clTypeOfField=taFloat, SetFocus, Text, Password=True/False
CheckBox: IsChecked | ComboBox: Items[ItemIndex], AddItem('Metin','Deger')
15. EVENT SİSTEMİ
Form.AddNewEvent(Bilesen,tbeOnClick,'ProsedurAdi');
// Tipler: tbeOnClick | tbeOnChange | tbeOnEnter | tbeOnExit
// tbeOnMouseDown | tbeOnMouseUp | tbeOnMouseMove | tbeOnTimer
// tbeOnFormKeyDown | tbeOnFormKeyUp (Windows)
// tbeOnVirtualKeyboardShown | tbeOnVirtualKeyboardHidden (mobil)
Mouse Koordinatları: Form.clSenderMousePosX, Form.clSenderMousePosY
Klavye Algılama: Form.clSenderKeyChar (32=boşluk, 119=w, 97=a, 100=d)
🎨 KATMAN 1 — BİLEŞEN
11. PRO BİLEŞENLER
TClProButton | TClProEdit | TClProPanel | TClProLabel | TClProImage | TClProSearchEdit | TClProDateEdit | TClProListView | TClProListViewDesignerPanel
SetupComponent (JSON Girişi):
clComponent.SetupComponent(btn,'{"Align":"Center","RoundHeight":15,"Width":300,"TextSize":30}');
clProSettings (Programatik Yönetim):
btn.clProSettings.RoundHeight=15; RoundWidth=15; BorderWidth=3; IsFill=True; IsRound=True;
btn.clProSettings.BorderColor=clAlphaColor.clHexToColor('#d1d1d1');
btn.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ebe6e6');
btn.clProSettings.FontSize=17; FontVertAlign=palcenter; FontHorzAlign=palCenter;
btn.clProSettings.TextSettings.Font.Style=[fsBold,fsItalic,fsUnderline];
btn.clProSettings.IsTransparent=False;
btn.SetclProSettings(btn.clProSettings);
StyledSettings: ssFamily | TextSettings: Font.Size/Style/FontColor
clAlphaColor: clHexToColor('#hex'), clWhite
Özel Parametreler: PictureSource='url', PictureAutoFit=True, WordWrap=True, AutoSize=True, IsTransparent=True
12. İLERİ BİLEŞENLER
Switch | NumberBox | Chart | Circle | Rectangle | RadioButton | RadioGroup | Expander | PageControl | StringGrid | ProGrid | WebBrowser | ProWebBrowser | FramedScrollBox | MenuFrame | SearchBox | DrawForm | GuideForm | Timer | MediaPlayer | QRCodeGenerator
13. LAYOUT YAPILARI
TclLayout | TclFlowLayout (Kapsayıcı taşınca alta sarar) | TclGridLayout (Izgara) | TclScaledLayout (Çözünürlüğe göre ölçekli)
14. TEMA SİSTEMİ
Form=TclStyleForm.Create(Self); Form.clSetStyle(Form.LightSB); // Veya DarkSB
16. VIRTUAL KEYBOARD (Sanal Klavye Kontrolü)
Form.AddNewEvent(Form,tbeOnVirtualKeyboardShown,'KlavyeAcildi');
void KlavyeAcildi;{Layout1.Margins.Bottom=Form.clVKBoundsHeight;}
Form.clVKBoundsWidth/Height/Right/Left; Form.clVKVisible=False;
💾 KATMAN 2 — VERİ
17. SYSTEM LIBRARY (Gömülü 58+ Fonksiyon)
String İşlemleri: Copy, Delete, Insert, QuotedStr, Length, Pos, Trim, UpperCase, LowerCase, Chr, AnsiCompareStr, Append
Matematik: Abs, ArcTan, Cos, Sin, Ln, Sqrt, Random, Round, Frac, Trunc, Odd, Ord, Dec, Inc, Div, Mod (clMath.GenerateRandom(min,max))
Tarih/Saat: Date, Time, Now, DayOfWeek, DecodeDate, EncodeDate, FormatDateTime, IncMonth
Tip Dönüşümleri: IntToStr, StrToInt, FloatToStr, StrToFloat, DateToStr, StrToDate, IntToHex, FormatFloat
Giriş/Çıkış Modülleri: ShowMessage, InputQuery, Ask, Console.Text() (Sadece Windows exe'de çalışır)
Sistem: Beep, GetCurrentLocation, SleepAndCall, ProcessMessages, HoldScreen
18. CL UTILITIES
CLParseJSON(json,path) dot notation yapısı destekler: 'products.0.price'
ClAnimateFloat / Wait / Delay | ClDoClick(bilesen) | ClFileExists | ClLoadFromFile / ClSaveToFile
19. CLOMOSY CLASS API
clGetUserName, clGetUserEmail, ClomosyID, RunUnit('ad'), GlobalVariableString, PlatformIsMobile, AppFilesPath, DBSQLiteQuery
20. REST API İSTEKLERİ
var rest:TCLRest;
{rest=TCLRest.Create; rest.BaseURL='url'; rest.Accept='application/json';
rest.Method=rmPOST; // rmGET, rmPUT, rmDELETE
rest.AddBody('{"k":"v"}','application/json'); rest.Execute; var yanit=rest.Response;}
21. JSON YÖNETİMİ (3 Farklı Yöntem)
// Yöntem 1: TCLJSONQuery (DataSet Mantığı)
json=TCLJSONQuery.Create(nil); json=Clomosy.ClDataSetFromJSON('['+str+']');
with json do{if(Found){First;while(not EOF){FieldByName('ad').AsString;Next;}}}
// Yöntem 2: CLParseJSON (Doğrudan Nokta Notasyonu)
fiyat=Clomosy.CLParseJSON(jsonVeri,'products.0.price');
// Yöntem 3: Nesnesel Yapı
// TclJSON, TclJSONObject, TclJSONArray, TclJSONValue
22. VERİTABANI İŞLEMLERİ (SQLite & SQL Server)
// SQLite bağlantı + tablo oluşturma:
Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath+'db.db3','');
Clomosy.DBSQLiteQuery.Sql.Text='CREATE TABLE IF NOT EXISTS t(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)';
Clomosy.DBSQLiteQuery.OpenOrExecute;
// Kayıt sorgulama sonu (EOF) kontrolü:
if(not Clomosy.DBSQLiteQuery.Eof) // İçeride kayıt var demektir
// SQL Server Bağlantısı:
Clomosy.DBSQLServerConnect('SELECT...')
23. DOSYA & STREAM YÖNETİMİ
FileToStream, FileToBase64, Base64ToFile, TclFileStream, TclMemoryStream, TclStringList, AssignFile, CloseFile, ReadLn, WriteLn
24. DİZİLER (Arrays)
var d:array[0..4] of Integer; d[0]=100; // Standart Statik Dizi
// TclArray (Dinamik ve Nesnesel):
var D:TClArrayInteger;
D=TClArrayInteger.Create; D.Add(20); var x = D.GetItem(0); D.Count; D.Destroy;
25. HATA YÖNETİMİ
try{Sonuc=y div x;}except{ShowMessage('Hata: '+LastExceptionClassName+'-'+LastExceptionMessage);}
🏛️ KATMAN 3 — MİMARİ & PATTERN'LER
26. ANİMASYON
ClAnimateFloat(bilesen,'Opacity',0,1,0.5); | ClAnimateFloatWait
27. OYUN & AI & IoT
TclGameEngine | TclOpenAIEngine (Yapay Zeka entegrasyonu) | TclMQTT / TclMQTTClient (Nesnelerin İnterneti)
28. SENSÖR & MEDYA DONANIMLARI
MotionSensor, CallBarcodeReader, Camera_Access, TclMediaPlayer, TclQRCodeGenerator
TclShareService.Share('metin','url') | Notification.Send('Başlık','Mesaj')
29. TCLTIMER
var timer:TCLTimer; timer=Form.AddNewTimer(Form,'timer',100); // 100ms
Form.AddNewEvent(timer,tbeOnTimer,'TimerCalisti'); timer.Enabled=True;
31. RESPONSIVE TASARIM KURALLARI
if(Form.clWidth<400){/* Mobil kodları */}else{/* Tablet/Masaüstü */}
btn.Width=Form.clWidth*0.75; // Ekranın %75'ini kapla
btn.Left=(Form.clWidth-btn.Width)/2; // Tam yatay merkezleme
35. BEST PRACTICES (En İyi Pratikler)
✅ YAPILMASI GEREKENLER: REST isteklerini mutlaka try-except bloğuna alın. SQL sorgularında string ifadeleri QuotedStr ile sarın. Responsive tasarımlarda clWidth kullanın.
❌ KAÇINILMASI GEREKENLER: Sistem anahtar kelimelerini (keyword) değişken adı yapmayın. Blokları korumasız (try-except'siz) bırakıp REST yürütmeyin. clHide yapmadan yeni bir RunUnit çağırmayın.
37. IDE KULLANIMI (cms.clomosy.com)
Kritik Hatalardan Kaçınma: Educational (Eğitim) hesaplarında en fazla 33 birim (unit) oluşturulabilir. JSON yapılarında RECORD_GUID zorunludur. Değişken adlarında kesinlikle Türkçe karakter kullanılamaz. Kod bloklarında var ifadesini unutmak doğrudan Syntax Error üretir.
38. FORUM İSTATİSTİKLERİ (forum.clomosy.com.tr)
Web Wiz Forums v12.07 altyapısı | 3,055 mesaj, 1,051 konu, 9 forum başlığı. En aktif bölüm: "Genel İşlemler" (FID=122).
🔑 HIZLI REFERANS KARTI
Blok:{} | Var:var ad:Tip | Atama:= | String:'tek' | Yorum:// /* */
function Ad(p):Tip;{Result=x;} | void Ad;{}
Unit:Clomosy.RunUnit('ad') | GlobalVariableString
Form:TclForm.Create(Self) | Renk:SetFormColor('#hex','',clGNone)
Btn:AddNewButton | Edit.Text | CheckBox.IsChecked
Event:AddNewEvent(b,tbeOnClick,'void') | 12 tip
Pro:clProSettings.RoundHeight/BorderColor/FontSize/IsFill
REST:TCLRest.Create | JSON:CLParseJSON/ClDataSetFromJSON
SQLite:DBSQLiteQuery.OpenOrExecute | TclArray:.Add.GetItem.SetItem
Timer:AddNewTimer | Game:TCLGameForm+RegisterSound
AI:TclOpenAIEngine | IoT:TclMQTT | Share:TclShareService
Hata:try{}except{} | Responsive:if(clWidth<400) | clWidth*0.75