Evet böyle bir problem ile karşı karşıya kaldığınızda,yani formunuz üzerinde bir adet TdxRibbon eklemişsiniz,ve tüm nesneler skin ile kaplanırken, ribbon'unuz skin kaplamamıyorsa bilin ki uses 'de dxSkinsdxRibbonPainter uniti tanımlı değildir.tanımlayıp sorunu çözebilirsiniz.
İyi Çalışmalar
23 Ekim 2012 Salı
22 Ekim 2012 Pazartesi
Class Helper İle Nesne Oluşturmak
Sınıflardan nesne referansı oluştururken,kodun tekrar etmesi,kodun yönetimini zorlaştırıyor,
ve sürekli aynı kodu defalarca yazmak bizi yavaşlatıyor.
iyi çalışmalar.
Önce :
var aQuery: TUniQuery; begin aQuery := TUniQuery.Create(Application); aQuery.SQL.Text := 'sql kodun'; aQuery.Execute; FreeAndNil(aQuery); end;TUniquery sınıfına bir "class extension function" yazıyoruz. Dikkat ederseniz bu sefer nesneye extension function olarak değilde, sınıfa extension function olarak yazıyoruz. O sebeble bu işi daha pratik hale getiriyoruz.
Sonra :
unit uUniHelper; interface uses Vcl.Forms, System.SysUtils, System.Classes, Data.DB, MemDS, DBAccess, Uni; type TUniQueryHelper = class helper for TUniQuery public class function CreatefromSQL(aSQL: string): TUniQuery; end; implementation { TUniQueryHelper } class function TUniQueryHelper.CreatefromSQL(aSQL: string): TUniQuery; var aQuery: TUniQuery; begin aQuery := TUniQuery.Create(Application); aQuery.Connection := UniConnection1; aQuery.SQL.Text := aSQL; aQuery.Execute; Result := aQuery; end; end.
var aQuery: TUniQuery; begin aQuery := TUniQuery.CreatefromSQL('sql kodun'); FreeAndNil(aQuery); end;
iyi çalışmalar.
12 Ekim 2012 Cuma
Datasnap rest sunucusu ile iletişim(Android Client)
Daha önce iOS(Objective-C) ortamından erişip bir UITableView nesnesi servisten gelen json veriyi yazdırmıştık.
Şimdi ise Android(Java) ortamından datasnap server'a erişip bir listview nesnesine nasıl okuyabiliriz.Bunu öğrenicez.
Datasnap Uygulaması oluştururken "Mobile Connectors" seçeneğini seçip devam ettiğiniz de size ilgili platformların mini frameworklerini
de oluşturuyor.objective-c için SBJson ismindeki framework örnek verilebilir.
Yine android(java) için Embarcadero firmasının yazdığı com.embarcedero.javaandroid paketi(mini framework diyebiliriz)
Yukarıda bahsettiğim frameworkleri datasnap uygulamanızı oluştururken "Mobile Connectors" seçeneğini işaretlediğinizde
projenizin dizininde "proxy" klasöründe ilgili frameworkü bulabilirsiniz.
AndroidManifest.xml dosyasına çift tıklayıp gelen ekrandan "Permissions" sekmesinden "android.permission.INTERNET" değerini ekliyorsunuz. Ekledikten sonra AndroidManifest.xml dosyasının içeriği aşağıdaki gibi olacaktır.
Eğer yukarıdaki "android.permission.INTERNET" değerini eklemez iseniz android uygulamanız datasnap rest sunucunuza erişmeyecektir.
İyi Çalışmalar.
activity_main.xml
MainActivity.java
package com.datasnap.restfulclient; import java.io.IOException; import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { this.bindListView(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } } private void bindListView() throws ClientProtocolException, IOException, JSONException{ ArrayListlist=this.GetPersonList(); ArrayAdapter arrayAdapter = new ArrayAdapter (this,android.R.layout.simple_list_item_1, list); final ListView listView1=(ListView)this.findViewById(R.id.listView1); listView1.setAdapter(arrayAdapter); } private ArrayList GetPersonList() throws ClientProtocolException, IOException, JSONException{ ArrayList list=new ArrayList (); String json=this.getDataFromRest("http://192.168.0.16:8080/datasnap/rest/TServerMethods1/GetPersonList"); JSONObject jsonObject=new JSONObject(json); JSONArray arrayLevel1=jsonObject.getJSONArray("result"); JSONArray arrayLevel2=(JSONArray)arrayLevel1.get(0); for(int I=0; I< arrayLevel2.length(); I++){ JSONObject items=(JSONObject)arrayLevel2.getJSONObject(I); String firstName=items.get("firstname").toString(); String lastName=items.get("lastname").toString(); list.add(firstName+" "+lastName); } return list; } private String getDataFromRest(String httpUrl) throws ClientProtocolException,IOException{ HttpClient httpClient=new DefaultHttpClient(); HttpGet httpMethod=new HttpGet(httpUrl.toString()); httpMethod.setHeader("Content-type", "application/json"); HttpResponse httpResponse=httpClient.execute(httpMethod); int status=httpResponse.getStatusLine().getStatusCode(); if (status==200){ HttpEntity entity=httpResponse.getEntity(); String data=EntityUtils.toString(entity); return data; }else{ return null; } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
AndroidManifest.xml dosyasına çift tıklayıp gelen ekrandan "Permissions" sekmesinden "android.permission.INTERNET" değerini ekliyorsunuz. Ekledikten sonra AndroidManifest.xml dosyasının içeriği aşağıdaki gibi olacaktır.
AndroidManifest.xml
İyi Çalışmalar.
11 Ekim 2012 Perşembe
İlk Android Demom
Daha önce de android geliştirme işine girmiştim.Fakat bana göre geliştirme araçlarının kurulum zırvalıkları ve simulatörün bazı uyuzlukları yüzünden uğraşmayı bırakıp x-code'a dalmıştım.
Neyse dün yine yeniden başladım.Ve ilk işe yaramayan :) "Hello world" mahiyetinde ki uygulamamı yaptıktan sonra bir android cihaza yükleyip çalıştırdım.Ve paylaşmak istedim.
Projeyi burdan indirebilirsiniz.
İyi Çalışmalar.
Neyse dün yine yeniden başladım.Ve ilk işe yaramayan :) "Hello world" mahiyetinde ki uygulamamı yaptıktan sonra bir android cihaza yükleyip çalıştırdım.Ve paylaşmak istedim.
activity_main.xml
MainActivity.java
package com.example.helloworld; import android.os.Bundle; import android.app.Activity; import android.graphics.Color; import android.view.Menu; import android.view.View; import android.widget.*; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView textView1=(TextView)findViewById(R.id.textView1); final EditText editText1=(EditText)findViewById(R.id.editText1); final Button button1=(Button)findViewById(R.id.button1); button1.setText("Bas Bana"); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { textView1.setText(editText1.getText()); editText1.setBackgroundColor(Color.YELLOW); button1.setText("Bastın Bana"); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
Projeyi burdan indirebilirsiniz.
İyi Çalışmalar.
8 Ekim 2012 Pazartesi
JQuery Ajax Response Tamamlanamama Sorunu
fasillistcountbyyilandfasilno.php isminde bir php scriptim var.
Ve bu script içersinde bir tablonun satır sayısını yazdırıyorum.
function getfasilListCountByYilandfasilno(yil,fasilno) fonksiyonu ile de
sonucu almaya çalışıyorum.Fakat response tamamlanmadan "sResult" varsayılan değeri 0 ile
birlikte geri dönüyor.Yani bizim getfasilListCountByYilandfasilno fonksiyonun görevini
tam yerini getirmiş olamıyordu.Jquery Ajax Request parametrelerini aşağıdaki gibi düzenleyerek
çözelbildim.
İyi çalışmalar.
Ve bu script içersinde bir tablonun satır sayısını yazdırıyorum.
function getfasilListCountByYilandfasilno(yil,fasilno) fonksiyonu ile de
sonucu almaya çalışıyorum.Fakat response tamamlanmadan "sResult" varsayılan değeri 0 ile
birlikte geri dönüyor.Yani bizim getfasilListCountByYilandfasilno fonksiyonun görevini
tam yerini getirmiş olamıyordu.Jquery Ajax Request parametrelerini aşağıdaki gibi düzenleyerek
çözelbildim.
function getfasilListCountByYilandfasilno(yil,fasilno){ sResult=0; $.ajax({ type: 'GET', url: 'fasillistcountbyyilandfasilno.php', cache: true, async: false, contentType: "application/x-www-form-urlencoded", data: 'fasilno='+fasilno+'&yil='+yil, success: function(ajaxResponse) { sResult=ajaxResponse; }, }); return sResult; }
İyi çalışmalar.
2 Ekim 2012 Salı
UITabBarItem Nesnesini Özelleştirmek
UITabBarItem nesnesini nasıl kendi isteğimize göre seçili ve seçili olmayan simgeler ekleyebiliriz bunu göstermeye çalışıcam.
Bir UITabBar nesnesi ve üzerinde bir UITabBarItem nesnesi olduğunu varsayıyoruz.
30X30 transparan png formatında seçili ve seçili olmayan şeklinde iki tane resim dosyası hazırlıyorsunuz.
Daha sonra bunları projenize ekliyorsunuz.
Tanımladığınız tabBarItemBilgi Outlet'ini ilgili UITabBarItem nesnesi üzerine sürükleyip bırakıyorsunuz.(Bir nevi Controller'da tanımladığımız tabBarItemBilgi nesnesine View den gelecek olan veriyi tanımladık).
UITabBar Class Reference
İyi Çalışmalar.
Bir UITabBar nesnesi ve üzerinde bir UITabBarItem nesnesi olduğunu varsayıyoruz.
30X30 transparan png formatında seçili ve seçili olmayan şeklinde iki tane resim dosyası hazırlıyorsunuz.
Daha sonra bunları projenize ekliyorsunuz.
mainViewController.h
@interface mainViewController : UIViewController @property(nonatomic,retain) IBOutlet UITabBarItem * tabBarItemBilgi; @end
mainViewController.m
@synthesize tabBarItemBilgi; -(void) loadIconSettings { UIImage *iconInfo=[UIImage imageNamed:@"icon_info.png"]; //normal icon UIImage *iconInfoSel=[UIImage imageNamed:@"icon_info_sel.png"]; //Seçildiğinde gözükecek icon [tabBarItemBilgi setFinishedSelectedImage:iconInfoSel withFinishedUnselectedImage:iconInfo]; } - (void)viewDidLoad { [super viewDidLoad]; [self loadIconSettings]; }
Tanımladığınız tabBarItemBilgi Outlet'ini ilgili UITabBarItem nesnesi üzerine sürükleyip bırakıyorsunuz.(Bir nevi Controller'da tanımladığımız tabBarItemBilgi nesnesine View den gelecek olan veriyi tanımladık).
Kaynaklar :
UITabBarItem Class ReferenceUITabBar Class Reference
İyi Çalışmalar.
Kaydol:
Kayıtlar (Atom)